




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
單元7
購物網(wǎng)站用戶留言模塊設(shè)計(JSP+Servlet+Hibernate)
面向?qū)ο笫荍ava編程語言的特點,但在數(shù)據(jù)庫的編程中,操作對象為關(guān)系型數(shù)據(jù)庫,并不能對實體對象直接持久化,Hibernate通過ORM技術(shù)解決了這一問題。 Hibernate是Java應(yīng)用和關(guān)系數(shù)據(jù)庫之間的橋梁,它負(fù)責(zé)Java對象和關(guān)系數(shù)據(jù)庫之間的映射。 Hibernate內(nèi)部封裝了通過JDBC訪問數(shù)據(jù)庫的操作,向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)庫訪問API。
在基于MVC設(shè)計模式的JavaWeb應(yīng)用程序中,Hibernate可以作為應(yīng)用程序的數(shù)據(jù)訪問層或持久層。 Hibernate是一個開放源代碼的對象關(guān)系映射框架,它對JDBC做了輕量級的封裝,使得Java程序員可以使用面向?qū)ο缶幊趟枷雭聿僮鲾?shù)據(jù)庫。 Hibernate既可以在Java的客戶端程序中使用,也可以在JSP/Servlet的Web應(yīng)用程序中使用,Hibernate可以在JavaEE中取代CMP(Container-ManagedPersistence),完成數(shù)據(jù)持久化的重任。
使用Hibernate對數(shù)據(jù)庫進(jìn)行操作時,不必再編寫繁瑣的JDBC代碼,而是完全以面向?qū)ο蟮乃枷肽J?,通過Session接口對數(shù)據(jù)進(jìn)行查、改、增、刪操作。【知識梳理】1.Hibernate簡介 Hibernate是一個開源的持久層框架,它就是位于數(shù)據(jù)庫和應(yīng)用程序之間的各種ORM中間件,通過映射關(guān)系來協(xié)調(diào)持久對象與關(guān)系數(shù)據(jù)庫的交互,使開發(fā)者不必關(guān)心持久方面的問題,而專注于業(yè)務(wù)的開發(fā)。 Hibernate作為一個對象關(guān)系映射框架,本身對JDBC進(jìn)行了簡單的對象封裝,開發(fā)人員便可以運(yùn)用面向?qū)ο蟮木幊趟枷雭韺崿F(xiàn)對數(shù)據(jù)庫的操作。 Hibernate具有以下優(yōu)點。
①Hibernate可以大大提高開發(fā)效率。它封裝了數(shù)據(jù)庫的訪問細(xì)節(jié),程序員可以免去編寫繁瑣的SQL語句,可以專注于業(yè)務(wù)邏輯的實現(xiàn)。只需要在映射文件中對關(guān)系進(jìn)行定義,然后編寫少量的代碼,便可實現(xiàn)將實體與關(guān)系的維護(hù),對象與關(guān)系的轉(zhuǎn)換工作由Hibernate實現(xiàn)。
②Hibernate使應(yīng)用程序具有良好的移植性。Hibernate框架是輕量級、低侵入性的框架,對實體對象實現(xiàn)了透明持久化。當(dāng)持久層框架發(fā)生改變時,例如,不再使用Hibernate框架,改為使用其他框架,那么不需要更改業(yè)務(wù)邏輯。
③Hibernate可以跨數(shù)據(jù)庫平臺,支持多種常用數(shù)據(jù)庫,如SQLServer、Oracle、MySQL等。使用Hibernate不必?fù)?dān)心底層數(shù)據(jù)庫的類型,當(dāng)更換底層數(shù)據(jù)庫時,只需更改Hibernate的配置文件即可,而不需要更改程序的代碼。2.對象-關(guān)系映射
對象-關(guān)系映射(ObjectRelationalMapping,ORM)是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫的相互匹配的技術(shù),是隨著面向?qū)ο蟮能浖_發(fā)方法發(fā)展而產(chǎn)生的。3.?dāng)?shù)據(jù)持久化
(1)什么叫持久化?
持久化(Persistence),即把數(shù)據(jù)(如內(nèi)存中的對象)保存到可永久保存的存儲設(shè)備中(如磁盤)。
持久化的主要應(yīng)用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型的數(shù)據(jù)庫中,當(dāng)然也可以存儲在磁盤文件、XML數(shù)據(jù)文件中等。
(2)什么叫持久層?
持久化層(PersistenceLayer),即專注于實現(xiàn)數(shù)據(jù)持久化應(yīng)用領(lǐng)域的某個特定系統(tǒng)的一個邏輯層面,將數(shù)據(jù)使用者和數(shù)據(jù)實體相關(guān)聯(lián)。
(3)為什么要持久化?增加持久層的作用是什么?
數(shù)據(jù)庫的讀寫是一個很耗費(fèi)時間和資源的操作,當(dāng)大量用戶同時直接訪問數(shù)據(jù)庫的時候,效率將非常低,如果將數(shù)據(jù)持久化就不需要每次從數(shù)據(jù)庫讀取數(shù)據(jù),直接在內(nèi)存中對數(shù)據(jù)進(jìn)行操作,這樣就節(jié)約了數(shù)據(jù)庫資源,而且加快了系統(tǒng)的反應(yīng)速度。
增加持久化層提高了開發(fā)的效率,使軟件的體系結(jié)構(gòu)更加清晰,在代碼編寫和系統(tǒng)維護(hù)方面變得更容易。
特別是在大型的應(yīng)用項目中會更有利。
同時,持久化層作為單獨的一層,人們可以為這一層獨立地開發(fā)一個軟件包,讓其實現(xiàn)將各種應(yīng)用數(shù)據(jù)的持久化,并為上層提供服務(wù)。
從而使得各個企業(yè)里做應(yīng)用開發(fā)的開發(fā)人員,不必再來做數(shù)據(jù)持久化的底層實現(xiàn)工作,而是可以直接調(diào)用持久化層提供的API。
數(shù)據(jù)持久化可以減少訪問數(shù)據(jù)庫的次數(shù),增加應(yīng)用程序執(zhí)行速度;使代碼重用度提高,能夠完成大部分?jǐn)?shù)據(jù)庫操作;使持久化不依賴于底層數(shù)據(jù)庫和上層業(yè)務(wù)邏輯實現(xiàn)。
更換數(shù)據(jù)庫時只需修改配置文件,而不需要修改業(yè)務(wù)邏輯代碼。4.Hibernate的常用接口 Hibernate的常用接口主要有Configuration接口、SessionFactory接口、Session接口、Transaction接口、Query接口和Criteria接口。
這6個核心接口在Hibernate框架中發(fā)揮著重要作用,使用這6個接口不僅可以獲取數(shù)據(jù)庫連接,對數(shù)據(jù)進(jìn)行持久化操作,HQL查詢等,而且還可以對事務(wù)進(jìn)行控制。(1)Configuration接口(2)SessionFactory接口(3)Session接口(4)Transaction接口(5)Query接口(6)Criteria接口5.Hibernate的運(yùn)行原理
①Java應(yīng)用程序首先調(diào)用Configuration類,該類讀取Hibernate配置文件和映射文件中的信息。
②Configuration類利用配置信息和映射信息生成一個SessionFactory對象。
③SessionFactory對象生成一個Session對象。
④Session對象生成一個Transaction對象。
⑤Session對象通過get()、load()、save()、update()、delete()和savaOrUpdate()等方
法對PO(PersistentObjects,持久化對象)進(jìn)行加載、保存、更新、刪除等操作。圖7-1
Hibernate的運(yùn)行原理圖6.Hibernate實例的3種狀態(tài)(1)臨時狀態(tài)(Transient)(2)持久化狀態(tài)(Persistent)(3)脫管狀態(tài)(Detached)7.Hibernate的映射文件
(1)Hibernate映射文件的基本概念 Hibernate映射文件是Hibernate的核心文件,用來把持久化對象與數(shù)據(jù)庫中的表、持久化對象之間的關(guān)系與數(shù)據(jù)庫表之間的關(guān)系、持久化對象的屬性與數(shù)據(jù)表字段一一映射起來。
(2)Hibernate映射文件應(yīng)遵循的規(guī)則 Hibernate映射文件應(yīng)遵循以下規(guī)則:
①映射文件名稱和對應(yīng)的實體類名稱一致;
②映射文件和對應(yīng)的實體類保存在同一個位置;
③映射文件必須在hibernate.cfg.xml文件中加載,通過<mapping>標(biāo)簽的resource標(biāo)簽可以實現(xiàn)加載。
(3)Hibernate映射文件的元素 Hibernate映射文件的根元素為<hibernate-mapping>,其他元素嵌入在該根元素中,其常用屬性主要有package屬性,用于指定包名。
通常情況下只有一個<class>元素,每個<class>元素可以有多個<property>子元素。
(4)<id>元素的主要屬性 <id>元素的主要屬性如下所示。
①name屬性:指定持久化類中的屬性名稱。
②column屬性:指定數(shù)據(jù)表中的字段名稱。
③type屬性:用于指定字段的類型,如integer、double、string等。
(5)常用內(nèi)置主鍵生成策略 <id>元素的子元素<generator>用于配置數(shù)據(jù)表主鍵的生成策略,通過class屬性進(jìn)行設(shè)置。常用內(nèi)置主鍵生成策略如下所示。
①increment:由Hibernate以自增的方式生成,增量為1。
②identity:由底層數(shù)據(jù)庫生成,其前提是底層數(shù)據(jù)庫支持自增字段類型。
③sequence:Hibernate根據(jù)底層數(shù)據(jù)庫的序列生成,其前提條件是底層數(shù)據(jù)庫支持序列。
④hilo:Hibernate根據(jù)high/low算法生成。
⑤native:根據(jù)底層數(shù)據(jù)庫對自動生成標(biāo)識符的支持能力,選擇identity、sequence或hilo作為內(nèi)置主鍵。
⑥uuid:Hibernate采用128位的UUID(UniversalUniqueIdentitication)算法生成,該算法能夠在網(wǎng)絡(luò)環(huán)境生成唯一的字符串標(biāo)識符,不推薦使用,因為字符串類型要比整型占用更多的數(shù)據(jù)庫空間。
⑦assigned:由Java應(yīng)用程序負(fù)責(zé)生成,此時不能把setID()方法聲明為private類型,不推薦使用。
(6)<property>元素的常用配置屬性 <property>元素用于配置數(shù)據(jù)表中字段的屬性信息,通過該元素能夠詳細(xì)地對數(shù)據(jù)表的字段進(jìn)行描述,其常用配置屬性如下所示。
①name:指定持久化類中的屬性名稱。
②column:指定數(shù)據(jù)表中的字段名稱。
③type:指定數(shù)據(jù)表中的字段類型。
④not-null:指定數(shù)據(jù)表字段的非空屬性,它是一個布爾值。
⑤length:指定數(shù)據(jù)表中的字段長度。
⑥unique:指定數(shù)據(jù)表字段值是否唯一,它是一個布爾值。
⑦lazy:設(shè)置延遲加載。8.Hibernate的配置文件 Hibernate的配置文件主要用來配置數(shù)據(jù)庫連接參數(shù),如數(shù)據(jù)庫的驅(qū)動程序、URL、用戶名和密碼等。9.ThreadLocal簡介
在Hibernate框架的應(yīng)用中,Session對象的管理非常重要,由于Session對象并非線程安全,稍有不慎將可能導(dǎo)致臟數(shù)據(jù)的產(chǎn)生。 ThreadLocal對象的以下3個方法可以對非線程安全的Session對象進(jìn)行管理,從而解決了多線程間Session對象的共享沖突問題。(1)set()方法 set()方法用于將對象裝載到ThreadLocal對象中。其語法格式如下: publicvoidset(Tvalue)(2)get()方法 get()方法用于從ThreadLocal對象中獲取已裝載的對象。其語法格式如下: publicTget()(3)remove()方法 remove()方法用于移除ThreadLocal對象中裝載的對象。其語法格式如下: publicvoidremove()10.SessionFactory對象的創(chuàng)建過程
①Hibernate通過Configuration類加載Hibernate
的配置信息,主要是通過調(diào)用Configuration對象
的configure()方法來實現(xiàn),默認(rèn)情況下,Hibernate加載hibernate.cfg.xml文件。
②Hibernate的配置信息加載完畢后通過Configuration對象的buildSessionFactory()方法創(chuàng)建SessionFactory對象。11.Hibernate持久化對象對數(shù)據(jù)操作的流程
Hibernate持久化對象對數(shù)據(jù)操作的流程如圖7-2所示。圖7-2
Hibernate持久化對象對數(shù)據(jù)操作的流程12.Hibernate框架的Session接口加載
數(shù)據(jù)的方法 Hibernate框架的Session接口提供了兩個加載數(shù)據(jù)的方法,分別為get()和load(),它們都用于加載數(shù)據(jù),兩者的區(qū)別如下所示。
①get()方法返回實際對象,當(dāng)調(diào)用Session的get()方法時,Hibernate框架就會發(fā)出SQL語句進(jìn)行查詢。
②load()方法返回對象的代理,當(dāng)調(diào)用Session的load()方法時,Hibernate框架并不會立刻發(fā)出SQL語句進(jìn)行查詢,只有在引用對象時,Hibernate框架才會發(fā)出SQL語句去查詢對象。13.HQL查詢語言 HQL(HibernateQueryLanguage)查詢語言是面向?qū)ο蟮牟樵冋Z言,其語法和SQL語法有些相似,功能十分強(qiáng)大。 SQL的操作對象是數(shù)據(jù)列、數(shù)據(jù)表等數(shù)據(jù)庫對象,而HQL的操作對象是類、實例、屬性等。(1)實現(xiàn)HQL查詢的步驟 HQL查詢依賴于Query類,每個Query實例對應(yīng)一個查詢對象,使用HQL查詢按如下步驟進(jìn)行:
①獲取HibernateSession對象;
②編寫HQL語句;
③以HQL語句作為參數(shù),調(diào)用Session的createQuery方法創(chuàng)建查詢對象;
④如果HQL語句包含參數(shù),則調(diào)用Query的setXxx()方法為參數(shù)賦;
⑤調(diào)用Query獨享的list()或uniqueResult()方法返回查詢結(jié)果列表。(2)HQL查詢的常用子句 HQL查詢的常用子句如下所示。
①HQL查詢的from子句。 from是最簡單的HQL語句,也是最基本的HQL語句,from關(guān)鍵字后緊跟持久化類的類名。
②HQL查詢的select子句。 select子句用于選擇指定的屬性或直接選擇某個實體,當(dāng)然select選擇的屬性必須是from后持久化類包含的屬性。
③HQL查詢的where子句。 where子句主要用于篩選選中的結(jié)果,縮小選擇的范圍,例如:fromGoodsInfoasinfowhereinfo.goodsId<5。
④HQL查詢的orderby子句。 HQL查詢語言通過orderby子句實現(xiàn)對查詢結(jié)果集進(jìn)行排序操作,還可以使用ASC或DESC關(guān)鍵字指定升序或者降序,例如:fromGoodsInfoasinfoorderbyinfo.goodsCodeDESC。
⑤HQL查詢的groupby子句。
在HQL查詢語言中,通常使用groupby子句進(jìn)行分組操作,其使用方法與SQL語言相似,它也可以使用having關(guān)鍵字設(shè)置分組的條件。
⑥HQL查詢的聚集函數(shù)。
在HQL查詢語言中,支持常用聚合函數(shù)的使用,如avg(計算屬性的平均值)、count(統(tǒng)計選擇對象的數(shù)量)、max(統(tǒng)計屬性值的最大值)、min(統(tǒng)計屬性值的最小值)、sum(計算屬性值的總和)等,其使用方法與SQL基本相同。查詢數(shù)據(jù)表中的記錄數(shù)據(jù),使用count(*)即可,例如:selectcount(*)fromGoodsInfoasinfo。14.Query接口 Query是Hibernate的一個面向?qū)ο蟮牟樵兘涌?,通過調(diào)用session.createQuery()生成Query的實例對象。
調(diào)用query.list()執(zhí)行查詢,返回的查詢結(jié)果作為List對象存放,如果每一個查詢結(jié)果每行包含多個字段,則存放在Object[]數(shù)組中?!緫?yīng)用技巧】
本單元的應(yīng)用技巧如下所示。
①Hibernate框架中的多對一關(guān)聯(lián)關(guān)系映射、一對一關(guān)聯(lián)關(guān)系映射、繼承映射的正確使用。
②HQL查詢語句的正確使用。
③通過ThreadLocal對象解決Session對象的線程安全問題。
④通過Query對象的setParameter()方法對HQL語句進(jìn)行動態(tài)賦值。
⑤同一個JSP頁面中包含兩個不同的表單,根據(jù)用戶登錄狀態(tài)顯示不同的表單內(nèi)容。
⑥分頁查看留言信息。
⑦日期數(shù)據(jù)的格式化方法。
⑧在Servlet類中根據(jù)請求參數(shù)method值的不同,判斷業(yè)務(wù)請求類型并對其進(jìn)行處理,分別執(zhí)行不同的代碼。
⑨使用級聯(lián)更新的方法對回復(fù)信息進(jìn)行持久化。
⑩將多個子類通過類繼承樹映射成一張表,然后配置鑒別器與子類的鑒別值?!经h(huán)境創(chuàng)設(shè)】
①下載與配置Hibernate。 Hibernate官方網(wǎng)站的網(wǎng)址是http://www.,在該網(wǎng)站上可以獲取Hibernate的最新版本的jar包及幫助文檔,本書所使用的Hibernate開發(fā)包為Hibernate4.1.8版本。圖7-3
Hibernate的支持類庫
②下載并安裝好數(shù)據(jù)庫管理系統(tǒng)SQLServer2008。
③在MicrosoftSQLServer2008的數(shù)據(jù)庫eshop
中創(chuàng)建本單元所需的多個數(shù)據(jù)表,“用戶表”
已在前面的單元中創(chuàng)建完成了,本單元只創(chuàng)建
“留言表”、“留言回復(fù)表”和“留言頭像”。字段名數(shù)據(jù)類型字段名數(shù)據(jù)類型留言IDint留言標(biāo)題nvarchar(255)留言內(nèi)容text留言時間date用戶IDint回復(fù)IDint表7-1“留言表”的結(jié)構(gòu)信息字段名數(shù)據(jù)類型字段名數(shù)據(jù)類型回復(fù)IDint回復(fù)內(nèi)容text回復(fù)時間date表7-2“留言回復(fù)表”的結(jié)構(gòu)信息字段名數(shù)據(jù)類型字段名數(shù)據(jù)類型頭像IDint頭像地址nvarchar(50)表7-3“留言頭像”數(shù)據(jù)表的結(jié)構(gòu)信息
④下載Servlet支持類庫servlet-api.jar和JDBC支持類庫sqljdbc4.jar。
⑤準(zhǔn)備開發(fā)Web應(yīng)用程序所需的圖片文件和JavaScript文件。
⑥在計算機(jī)的【資源管理器】中創(chuàng)建文件夾unit07。
⑦啟動Eclipse,設(shè)置工作空間為unit07,然后進(jìn)入Eclipse的開發(fā)環(huán)境。
⑧在Eclipse集成開發(fā)環(huán)境中配置與啟動Tomcat服務(wù)器。
⑨新建動態(tài)Web項目,命名為project07。在
該Web項目中創(chuàng)建4個包,分別命名為“dao”、“model”、“servlet”和“util”。
⑩將Jar包文件servlet-api.jar和sqljdbc4.jar
復(fù)制到Web項目的文件夾“WebContent\
WEB-INF\lib”下,并在Eclipse集成開發(fā)環(huán)
境的“項目資源管理器”刷新各個Web項目?!救蝿?wù)描述】【任務(wù)7-1】綜合運(yùn)用JSP、Servlet和Hibernate技術(shù)設(shè)計購物網(wǎng)站的留言模塊
購物網(wǎng)站中設(shè)置留言模塊,為用戶與網(wǎng)站之間的架起溝通橋梁,通過留言模塊,用戶可以反饋購物過程中出現(xiàn)的問題或者網(wǎng)站中存在的問題,提出自己的建議或意見,促使購物網(wǎng)進(jìn)一步提高服務(wù)質(zhì)量和效率。
設(shè)計購物網(wǎng)站的留言模塊,實現(xiàn)以下功能:(1)用戶注冊(2)用戶登錄(3)發(fā)表留言信息(4)回復(fù)留言(5)修改回復(fù)留言(6)刪除回復(fù)留言圖7-4購物網(wǎng)站中留言模塊的實現(xiàn)流程
留言模塊由4層結(jié)構(gòu)組成,分別為表示層、業(yè)務(wù)邏輯層、持久層和數(shù)據(jù)庫層。
留言模塊主要有4個實體對象,分別為用戶實體、留言實體、回復(fù)信息實體和頭像實體,這些實體對象之間的關(guān)系如圖7-5所示。圖7-5實體對象及其關(guān)系
留言實體是4個實體對象的核心對象,其中留言與用戶之間是多對一的關(guān)系,一個用戶可以發(fā)表多條留言,留言與回復(fù)之間是一對一的關(guān)系,一條留言信息只能對應(yīng)一條回復(fù)信息,用戶與頭像是一對一的關(guān)系,一個用戶只能對應(yīng)一個頭像?!救蝿?wù)實施】【網(wǎng)頁結(jié)構(gòu)設(shè)計】
本單元的應(yīng)用程序中主要包括用戶留言、回復(fù)留言和修改留言等頁面?!揪W(wǎng)頁CSS設(shè)計】
在DreamweaverCS6開發(fā)環(huán)境中創(chuàng)建6個CSS文件:common.css、style.cssbasecss、view.css、module.css、member.css。
這6個CSS文件具體的代碼見本書提供的電子資源?!眷o態(tài)網(wǎng)頁設(shè)計】 1.創(chuàng)建發(fā)表留言信息的靜態(tài)網(wǎng)頁message07.html
在DreamweaverCS6中創(chuàng)建靜態(tài)網(wǎng)頁message07.html,該網(wǎng)頁的初始HTML代碼如表1-5所示。
在網(wǎng)頁message07.html中<head>和</head>之間編寫如下所示的代碼,引入所需的CSS樣式文件。圖7-6網(wǎng)頁message07.html的瀏覽效果 2.創(chuàng)建回復(fù)留言的靜態(tài)網(wǎng)頁managerRevert07.html
在DreamweaverCS6中創(chuàng)建靜態(tài)網(wǎng)頁managerRevert07.html,該網(wǎng)頁的初始HTML代碼如表1-5所示。
在網(wǎng)頁managerRevert07.html中<head>和</head>之間編寫如下所示的代碼,引入所需的CSS樣式文件。
網(wǎng)頁managerRevert07.html的瀏覽效果如圖7-7所示。圖7-7網(wǎng)頁managerRevert07.html的瀏覽效果 3.創(chuàng)建靜態(tài)網(wǎng)頁viewMessage07.html
在DreamweaverCS6中創(chuàng)建靜態(tài)網(wǎng)頁viewMessage07.html,該網(wǎng)頁的初始HTML代碼如表1-5所示。
在網(wǎng)頁viewMessage07.html中<head>和</head>之間編寫如下所示的代碼,引入所需的CSS樣式文件。圖7-8網(wǎng)頁viewMessage07.html的瀏覽效果【網(wǎng)頁功能實現(xiàn)】 1.編寫perties配置文件 perties配置文件用于指定連接數(shù)據(jù)庫所需的配置信息,包括數(shù)據(jù)庫驅(qū)動、連接URL、用戶名、密碼和Hibernate方言等。 2.編寫hibernate.cfg.xml映射文件
在Eclipse的【項目資源管理器】的子文件夾“src”中創(chuàng)建一個映射文件hibernate.cfg.xml。 3.創(chuàng)建Hibernate的初始化類HibernateUtil.java Hibernate的運(yùn)行離不開Session對象,對于數(shù)據(jù)的新增、修改、刪除和查詢都要用到Session,而Session對象依賴于SessionFactory對象,它需要通過SessionFactory進(jìn)行獲取。 Hibernate通過Configuration類加載Hibernate的配置信息,主要是通過調(diào)用Configuration對象的configure()方法來實現(xiàn)。 4.創(chuàng)建實體類及其映射
購物網(wǎng)站的留言模塊主要相關(guān)的實體類包括留言信息實體類Message、回復(fù)信息實體類Revert、用戶信息實體類User和頭像實體類FaceImage,這些實體類存在著關(guān)聯(lián)關(guān)系。 User類擁有兩個子類,分別為管理員用戶類Administrator和普通用戶類Guest。
(1)創(chuàng)建留言信息實體類Message
在包model中創(chuàng)建留言信息實體類,將該實體命名為Message,該類封裝了留言信息。(2)創(chuàng)建Message類的映射文件Message.hbm.xml(3)創(chuàng)建回復(fù)信息實體類Revert(4)創(chuàng)建Revert類的映射文件Revert.hbm.xml(5)創(chuàng)建用戶信息實體類User(6)創(chuàng)建User類的映射文件User.hbm.xml(7)創(chuàng)建頭像實體類FaceImage(8)創(chuàng)建FaceImage類的映射文件FaceImage.hbm.xml 5.創(chuàng)建UserDao類
在項目project07的包dao中,創(chuàng)建名為“UserDao.java”的類,該類是與用戶操作相
關(guān)的數(shù)據(jù)庫操作類,在該類需要定義多個方法,
這些方法將在各個功能模塊實現(xiàn)中逐步添加,
這里只定義3個方法,方法名稱分別為saveUser()、findUserByName()、getAllFace()。 6.用戶注冊功能的實現(xiàn)
用戶注冊實質(zhì)上是一個對用戶信息持久化的過程,所以需要對數(shù)據(jù)庫進(jìn)行操作。(1)創(chuàng)建JSP頁面user_register07.jsp(2)創(chuàng)建JSP頁面top07.jsp(3)創(chuàng)建JSP頁面bottom07.jsp(4)創(chuàng)建JSP頁面listFace07.jsp 7.創(chuàng)建UserServlet類
在項目project07的包servlet中,創(chuàng)建名為“UserServlet”的類,該類繼承HttpServlet類,在此類中重寫doGet()和doPost()方法,在doGet()方法中調(diào)用doPost()方法。 8.創(chuàng)建JSP頁面error07.jsp
在項目project07中創(chuàng)建JSP頁面error07.jsp,該頁面為留言模塊中公用的錯誤處理頁面。
例如,用戶注冊過程中,程序首先通過UserDao類的findUserByName()方法判斷用戶名是否已經(jīng)被注冊,如果用戶名已被注冊,則轉(zhuǎn)移到error.jsp頁面進(jìn)行錯誤信息提示,否則進(jìn)行持久化用戶注冊信息。 9.創(chuàng)建配置文件web.xml并編寫配置代碼
打開項目project07的文件夾“WebContent\WEB-INF”中的web.xml文件,然后編寫配置代
碼。 10.用戶登錄功能的實現(xiàn)
(1)創(chuàng)建JSP頁面user_login07.jsp
(2)在UserDao類中定義findUser()方法
(3)在UserServlet類中編寫用戶登錄請求代碼 11.創(chuàng)建MessageDao類
在項目project07的包dao中,創(chuàng)建名為“MessageDao”的類,該類是與用戶留言相關(guān)的數(shù)據(jù)庫操作類,在該類需要定義多個方法,這些方法將在各個功能模塊實現(xiàn)中逐步添加,這里暫定義1個方法,方法名稱為saveMessage(),該方法主要用于保存或修改留言信息。 12.創(chuàng)建MessageServlet類
在項目project07的包servlet中,創(chuàng)建名為“MessageServlet”的類,該類繼承HttpServlet類,該類是與留言信息相關(guān)的請求處理類。在此類中重寫doGet()和doPost()方法,在doGet()方法中調(diào)用doPost()方法。 13.用戶留言功能的實現(xiàn)
程序中只有成功登錄的用戶才能留言,所以在用戶留言之前需要判斷用戶是否登錄,如果沒有成功登錄,將不能提交留言信息。 14.分頁查看留言信息功能的實現(xiàn) Hibernate為數(shù)據(jù)分頁查詢提供了便捷的方法,通過Query接口進(jìn)行實現(xiàn),同時為了增加程序的可擴(kuò)展性和靈活性,在分頁查詢中使用自定義的分頁組件,該頁面組件可以讓程序變得更加靈活,而且其代碼可重用性非常高。(1)創(chuàng)建JSP頁面messageList07.jsp(2)創(chuàng)建自定義分頁組件PageModel類(3)在MessageDao類中定義getTotalRecords()方法和getPaging()方法(4)在MessageServlet類中編寫處理查看留言請求代碼 15.創(chuàng)建ManagerServlet類
在項目project07的包servlet中,創(chuàng)建名為“ManagerServlet”的類,該類繼承HttpServlet類,該類是將管理員操作的相關(guān)業(yè)務(wù)請求封裝
在該類中。
在此類中重寫doGet()和doPost(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子控制四輪驅(qū)動裝置項目建議書
- 生物科技的倫理問題探討試題及答案
- 配送中心與終端用戶的優(yōu)化試題及答案
- 2025年淘寶直播項目投資風(fēng)險評估報告
- 《關(guān)于強(qiáng)化危險化學(xué)品“一件事”全鏈條安全管理的措施》學(xué)習(xí)解讀
- CPMM考試分析及試題答案
- 2024年CPMM知識積累中的策略與方法試題及答案
- 統(tǒng)編版語文五年級下冊習(xí)作《寫讀后感》精美課件
- 供應(yīng)鏈項目管理的基本原則試題及答案
- 江蘇如皋市江安鎮(zhèn)中心中學(xué)2025屆高三下學(xué)期第六次檢測化學(xué)試卷含解析
- 5.2《稻》課時練-【中職專用】高二語文同步(高教版2023拓展模塊下冊)
- 2025年河南農(nóng)業(yè)職業(yè)學(xué)院單招職業(yè)技能測試題庫及參考答案
- 人教PEP版英語五年級下冊全冊教案
- 2025年個體古董借款質(zhì)押合同示范本
- 交管12123駕駛證減分學(xué)法題庫(部分)(圖文版)
- 油氣藏產(chǎn)能預(yù)測模型-深度研究
- 2025年四川成都市蒲江鄉(xiāng)村建設(shè)發(fā)展集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2024版房產(chǎn)經(jīng)紀(jì)人無底薪勞動協(xié)議
- 2025年上海煙草集團(tuán)上海新型煙草制品研究院限公司招聘8人高頻重點提升(共500題)附帶答案詳解
- 2025年中郵證券有限責(zé)任公司招聘筆試參考題庫含答案解析
- 社戒社康培訓(xùn)
評論
0/150
提交評論