應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線電話薄本科畢業(yè)設(shè)計(jì)說明_第1頁
應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線電話薄本科畢業(yè)設(shè)計(jì)說明_第2頁
應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線電話薄本科畢業(yè)設(shè)計(jì)說明_第3頁
應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線電話薄本科畢業(yè)設(shè)計(jì)說明_第4頁
應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線電話薄本科畢業(yè)設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 應(yīng)用jsp和hibernate設(shè)計(jì)實(shí)現(xiàn)在線通訊錄1 引言1.1 研究背景隨著網(wǎng)絡(luò)與現(xiàn)代通信技術(shù)的發(fā)展,人們之間的聯(lián)系越來越便捷,這也使得同時(shí)與許多人保持聯(lián)系成為可能,而單純依靠人腦已經(jīng)很難記住所有人的聯(lián)系方式。對于存儲到手機(jī)上的方式,比較方便,隨時(shí)隨地可以聯(lián)系,不過只能通過聯(lián)系,沒有記錄其他的聯(lián)系方式;對于記錄等信息到本子上的方式,第一也可能丟失本子,第二是查找起來比較困難,需要人工查找,而且更新時(shí)不容易,需要涂改以前記錄的信息,第三格式比較死板,不利于跟隨用戶的需求擴(kuò)展;對于用名片夾存放名片的形式也是查找起來不方便,有丟失的危險(xiǎn);對于記錄到WORD文檔或打印出來的,也是擴(kuò)展性不強(qiáng),查找起來

2、不方便。因此,以軟件形式實(shí)現(xiàn)的通訊錄成為了許多人保持聯(lián)系方式的首選。Web站點(diǎn)提供一個(gè)圖形化的界面,用于瀏覽網(wǎng)上資源。它是一個(gè)在Internat上運(yùn)行的全球性、分布式信息發(fā)布系統(tǒng)。該系統(tǒng)通過Internat向用戶提供基于超媒體的數(shù)據(jù)信息服務(wù)。它把各種類型的信息(文本、圖像、聲音和視頻等)有機(jī)地集成起來,供用戶使用。Web可以提供將圖形、音頻、視頻信息集合于一體的特性。同時(shí),Web非常易于導(dǎo)航,只需要從一個(gè)跳到另一個(gè),就可以在各頁站點(diǎn)之間進(jìn)行瀏覽。瀏覽WWW對系統(tǒng)平臺沒有要求。無論從Windows平臺、UNIX平臺、Macintosh平臺,還是別的平臺都可以訪問WWW。大量的圖形、音頻和視頻信息

3、會占用相當(dāng)大的磁盤空間,對于Web沒有必要把所有信息都放在一起,信息可以放在不同的站點(diǎn)上,只需要在瀏覽器中指明這個(gè)站點(diǎn)就可以了。使在物理上并不一定在一個(gè)站點(diǎn)的信息在邏輯上一體化,從用戶來看這些信息都是一體的。由于各個(gè)Web站點(diǎn)的信息包含站點(diǎn)本身的信息,信息的提供者要經(jīng)常對站點(diǎn)上的信息進(jìn)行更新。各個(gè)站點(diǎn)都要盡量保證信息的與時(shí)性。Web的交互性首先表現(xiàn)在它的超上,用戶的瀏覽順序和所瀏覽的站點(diǎn)完全由用戶自己決定。除此之外,通過表單的形式可以從服務(wù)器方獲得動(dòng)態(tài)的信息。用戶通過填寫表單可以向服務(wù)器提交請求,服務(wù)器可以根據(jù)用戶的請求返回相應(yīng)信息??蛻舳藛?dòng)瀏覽器,在瀏覽器地址欄中輸入要訪問頁面的URL地址

4、,經(jīng)地址解析,找到服務(wù)器的IP地址,向該地址所指向的Web服務(wù)器發(fā)出請求。Web服務(wù)器根據(jù)瀏覽器送來的請求,把URL地址轉(zhuǎn)化成頁面所在的服務(wù)器上的文件全名,找到相應(yīng)的文件。如果URL指向HTML靜態(tài)頁面,Web服務(wù)器使用 把該文檔直接送給客戶端,由客戶端瀏覽器解釋執(zhí)行。如果HTML文檔中加入了JSP、ASP、PHP等動(dòng)態(tài)代碼,則應(yīng)用程序?qū)⒉樵冎噶畎l(fā)送給數(shù)據(jù)庫驅(qū)動(dòng)程序,由驅(qū)動(dòng)程序?qū)?shù)據(jù)庫進(jìn)行操作。查詢結(jié)果返回給數(shù)據(jù)庫驅(qū)動(dòng)程序,并由驅(qū)動(dòng)程序返回Web服務(wù)器。Web服務(wù)器將結(jié)果數(shù)據(jù)嵌入到頁面中相應(yīng)的位置。Web服務(wù)器將完成的頁面以HTML格式發(fā)送給客戶端??蛻舳藶g覽器解釋執(zhí)行接收到的HTML文檔,在

5、屏幕上顯示結(jié)果。本通訊錄將極有普通通訊錄的主要功能,它可以對聯(lián)系人進(jìn)行分組,并可以添加或刪除組,也可以添加或刪除聯(lián)系人,或者對已經(jīng)保存的聯(lián)系人信息進(jìn)行修改,查詢功能也是必不可少的。1.2 研究現(xiàn)狀在線通訊錄系統(tǒng)是每一個(gè)用戶管理通訊錄不可缺少的信息系統(tǒng),它的容對于用戶來說非常重要,所以在線通訊錄系統(tǒng)應(yīng)該能夠?yàn)槊恳粋€(gè)用戶提供充足的信息和快捷的查詢手段,大大的方便了人與人之間的交流。 隨著科學(xué)技術(shù)的不斷增強(qiáng),計(jì)算機(jī)科學(xué)的日漸成熟,網(wǎng)上通訊工具迅速發(fā)展,其強(qiáng)大的功能已被人們深刻的認(rèn)識,并且進(jìn)入各個(gè)領(lǐng)域發(fā)揮越來越重要的作用。 作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對通訊錄進(jìn)行管理,具有著手工管理所無法比擬的

6、優(yōu)點(diǎn),如:檢索迅速、查找方便、可靠性高、存儲量大、性好、壽命長、成本低等。這些優(yōu)點(diǎn)能夠極提高通訊錄管理的效率,也是用戶理財(cái)?shù)目茖W(xué)化、正規(guī)化管理,與先進(jìn)科學(xué)技術(shù)接軌的重要條件。 因此,開發(fā)這樣一套應(yīng)用軟件成為很有必要的事情,對于我們即將畢業(yè)的學(xué)生來說,也是一次將計(jì)算機(jī)應(yīng)用于現(xiàn)實(shí)的一次很有意義的實(shí)踐活動(dòng)。1.3 研究目標(biāo)本在線通訊錄系統(tǒng)旨在開發(fā)一個(gè)功能實(shí)用,操作方便,簡單明了的通訊錄管理系統(tǒng)。實(shí)現(xiàn)對聯(lián)系人的增加、刪除、修改、查詢和留言板模塊功能。在設(shè)計(jì)軟件的同時(shí),盡可能的減少對系統(tǒng)資源的占用,并且力求做到通過使用本系統(tǒng),提高用戶之間的聯(lián)系效率,使通訊錄的管理工程化,規(guī)化。2 系統(tǒng)分析2.1 經(jīng)濟(jì)上

7、的可行性在線通訊錄系統(tǒng)是一個(gè)通訊信息進(jìn)行動(dòng)態(tài)跟蹤和指導(dǎo)的系統(tǒng),擬采用B/S結(jié)構(gòu)體系,而MyEclipse和tomcat是本系統(tǒng)使用的開發(fā)工具,兩個(gè)都可以在網(wǎng)上免費(fèi)下載并安裝使用;Mysql是本系統(tǒng)的后臺數(shù)據(jù)庫,同樣也可以在網(wǎng)上免費(fèi)下載使用。因此,基本無需支付任何費(fèi)用就可以使用這些開發(fā)工具,另外,本系統(tǒng)完全由個(gè)人開發(fā),除了個(gè)人的時(shí)間和精力的消耗之外,基本上沒有什么經(jīng)濟(jì)方面的開發(fā)成本。本系統(tǒng)的設(shè)計(jì)與開發(fā)是非商業(yè)性的,雖然沒有經(jīng)濟(jì)方面的收益,但對于本人而言,既加深了本人對JSP和Hibernate技術(shù)的了解和掌握,也為以后的軟件系統(tǒng)的設(shè)計(jì)和開發(fā)積累了一定的實(shí)踐經(jīng)驗(yàn)??傊?,本系統(tǒng)的經(jīng)濟(jì)社會效益是大于它

8、的開發(fā)成本的,因而,經(jīng)濟(jì)上是可行的。2.2 技術(shù)上的可行性在線通訊錄管理系統(tǒng)的開發(fā)主要包括前臺和后臺兩個(gè)方面,不管是普通用戶還是管理員都是通過瀏覽器進(jìn)入該系統(tǒng)。對于前臺,要求的界面友好、美觀大方、操作方便等要求;對于后臺則要求信息更新與時(shí)、數(shù)據(jù)存儲安全可靠、數(shù)據(jù)一致性高與易維護(hù)等要求。根據(jù)以上這兩點(diǎn),并結(jié)合B/S結(jié)構(gòu)在數(shù)據(jù)安全性、一致性、實(shí)時(shí)性等方面相對于C/S結(jié)構(gòu)的優(yōu)點(diǎn),確定本系統(tǒng)采用B/S結(jié)構(gòu)的開發(fā)模式。選擇JAVA技術(shù),關(guān)鍵在于它有一組強(qiáng)大的控件庫,如Web服務(wù)器控件、Web用戶控件、HTML控件等,最為熟悉的莫過于登錄控件,它為應(yīng)用程序提供了一種可靠的、無需編程的登錄解決方案,同時(shí)幫助

9、實(shí)現(xiàn)的用戶身份驗(yàn)證過程的自動(dòng)化。通過這些控件,可以大大提供系統(tǒng)的開發(fā)效率,因?yàn)樾适擒浖到y(tǒng)開發(fā)的關(guān)鍵。更為重要的是MyEclipse集成開發(fā)環(huán)境是一套完整的開發(fā)工具集,可以用于生成JSP.NET Web應(yīng)用程序,不僅自帶了運(yùn)行JSP.NET程序所需的服務(wù),如tomcat6.0服務(wù)器,還提供MySql Server數(shù)據(jù)庫各種操作,這些大大提高了編程的效率和代碼質(zhì)量。加上MyEclipse網(wǎng)頁設(shè)計(jì)工具的使用,可以設(shè)計(jì)出更簡潔大方的頁面,其代碼直接可以復(fù)制到MyEclipse中使用,這更進(jìn)一步方便了JAVA技術(shù)的運(yùn)用,從而在技術(shù)上為本系統(tǒng)的設(shè)計(jì)和開發(fā)提供了可能。2.3 需求分析開發(fā)軟件首先要進(jìn)行的

10、就是需求分析,通常這一步需要與客戶進(jìn)行廣泛的交流,對于一個(gè)復(fù)雜一些的系統(tǒng),可能需要與客戶進(jìn)行數(shù)次會議,甚至需要需求分析人員在客戶處調(diào)查數(shù)月。對于本通訊錄系統(tǒng),我們可以先將自己作為通訊錄的使用者,從自己的角度來考察需求(在真正的項(xiàng)目中,這一點(diǎn)是十分忌諱的,需求分析人員可以幫助,誘導(dǎo)客戶說出他的需求,而絕不能從自己的角度替客戶提出需求)。很顯然,一個(gè)普通的通訊錄系統(tǒng),最基本的功能是記錄一個(gè)聯(lián)系人的信息,那么,聯(lián)系人的信息需要有哪些呢?這是一個(gè)在需求分析中要特別注意的問題,一般而言,通訊錄使用者可能需要的信息有以下這些:、性別、工作單位、住址、 和其他備注信息。這樣開發(fā)者了解了需要保存的每個(gè)聯(lián)系人的

11、基本信息有哪些,同時(shí),應(yīng)當(dāng)注意到,不是每一位聯(lián)系人都有工作單位,也不是每一位聯(lián)系人都有手機(jī)或者 。因此,除了與性別外,其他信息都可以是空的,但既然是通訊錄,其中也至應(yīng)當(dāng)記錄該聯(lián)系人的一項(xiàng)聯(lián)系信息,所以,對上述信息記錄時(shí)的要求應(yīng)當(dāng)為:與性別是必需的,其他所有信息至少有一項(xiàng)不為空。與記錄聯(lián)系人信息相關(guān)的操作很容易聯(lián)想到有增加聯(lián)系人、刪除聯(lián)系人和對聯(lián)系人信息進(jìn)行更新3鐘。所以對聯(lián)系人的操作的需求歸納為以下3點(diǎn):增加新的聯(lián)系人、刪除已存在的聯(lián)系人、修改已存在的聯(lián)系人的信息。軟件形式的通訊錄與傳統(tǒng)紙面形式的通訊錄比較起來,可以實(shí)現(xiàn)更為方便、有效的管理。為了便于查看與使用,通常通訊錄需要對聯(lián)系人進(jìn)行分組管

12、理,這又成為一個(gè)新的需求挖掘點(diǎn)?;趯?shí)例的簡單性考慮,對于組操作假定僅有以下需求:組增加、組刪除、組改名。對于組的操作還有一個(gè)細(xì)節(jié)性的問題,有時(shí)候有些聯(lián)系人可能不會被歸屬于任何組,此時(shí),該聯(lián)系人會被歸入“未分組”這個(gè)組。也就是說,“未分組”本身也需要成為一個(gè)組,而且,它不應(yīng)當(dāng)可以被刪除。另外,為了避免所有人打開電腦都能隨意查看機(jī)主的通訊錄,本系統(tǒng)還應(yīng)設(shè)置一個(gè)登錄界面,即擁有機(jī)主的用戶名和密碼才能進(jìn)入系統(tǒng)。而作為通訊錄的擁有者,同時(shí)還會擁有一個(gè)數(shù)據(jù)庫,可以方便的進(jìn)行用戶名的添加功能。3 開發(fā)環(huán)境3.1 JSP技術(shù)3.1.1 JSP概述JSP的全稱是Java Server Pages,即“基于Ja

13、va服務(wù)器端動(dòng)態(tài)頁面技術(shù)”。它由Sun Microsystems公司在1999年6月推出,近年來已發(fā)展成為一種最流行的動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)。Sun公司自1990年開始設(shè)計(jì)Java,憑借著其簡單、面向?qū)ο蟆⑴c平臺無關(guān)等特點(diǎn)迅速征服了世界,尤其在日益普與的Internet應(yīng)用上,更是有著其獨(dú)特的、不可替代的優(yōu)勢。由于JSP是在Java的基礎(chǔ)上發(fā)展而來的,因此它也具有Java的一切優(yōu)秀品質(zhì)。這些優(yōu)點(diǎn),使得它區(qū)別于同時(shí)期的其他動(dòng)態(tài)網(wǎng)頁技術(shù),并且比它們更加符合和滿足程序開發(fā)人員的需要。JSP在HTML代碼中嵌入Java程序片段,并使用各種JSP指令,構(gòu)成了JSP頁面。這種頁面可以完成操作數(shù)據(jù)庫、上傳文件等復(fù)

14、雜的邏輯處理功能。另外,還通過支持JavaBean實(shí)現(xiàn)了功能擴(kuò)展。3.1.2 JSP運(yùn)行機(jī)制JSP是服務(wù)器端技術(shù)。在服務(wù)器端,JSP引擎解釋JSP代碼,然后將結(jié)果以HTML或XML頁面的形式發(fā)送到客戶端。在客戶端的用戶是看不到JSP代碼的。JSP容器(Web容器或Servlet引擎)接收到以.jsp為擴(kuò)展名的 訪問請求后,實(shí)質(zhì)是交給了一個(gè)JSP引擎處理,這個(gè)引擎就是一個(gè)Servlet,名叫org.apache.jspper.servlet.JspServlet。當(dāng)每個(gè)Jsp頁面在第一次被訪問的時(shí)候,JSP引擎就會把它翻譯成一個(gè)Servlet源程序(.java),接著再把這個(gè)Servlet的源程

15、序編譯成一個(gè)Servlet的Class類文件(.Class),然后再由Web容器以像普通Servlet程序一樣的方式來裝載和解釋執(zhí)行JSP容器管理JSP頁面生命周期的兩個(gè)階段:轉(zhuǎn)換階段和執(zhí)行階段。當(dāng)有一個(gè)對JSP頁面的客戶請求到來時(shí),JSP容器檢驗(yàn)JSP頁面的語法是否正確,將JSP頁面轉(zhuǎn)換為Servlet源文件,然后調(diào)用javac工具類編譯Servlet源文件生成字節(jié)碼文件,這一階段是轉(zhuǎn)換階段。接下來,Servlet容器加載轉(zhuǎn)換后的Servlet類,實(shí)例化一個(gè)對象處理客戶端的請求,在請求處理完成后,響應(yīng)對象被JSP容器接收,容器將HTML格式響應(yīng)信息發(fā)送到客戶端,這一階段是執(zhí)行階段。從整個(gè)過程

16、中可以知道,當(dāng)?shù)谝淮渭虞dJSP頁面時(shí),因?yàn)橐獙SP文件轉(zhuǎn)換Servlet類,所以響應(yīng)速度較慢。當(dāng)再次請求時(shí),JSP容器就會直接執(zhí)行第一次請求時(shí)產(chǎn)生的Servlet,而不會再重新轉(zhuǎn)換JSP文件,所以其執(zhí)行速度和原始的Servlet執(zhí)行速度幾乎一樣。在JSP執(zhí)行期間,JSP容器會檢查JSP文件,看是否有更新或修改。如果有更新和修改,JSP容器會再次編譯JSP或Servlet;如果沒有,就直接執(zhí)行前面產(chǎn)生的Servlet,這也是JSP相對于Servlet的好處之一。3.1.3 JSP特點(diǎn)JSP具有如下主要特點(diǎn):a) 把容的生成和顯示分離使用JSP技術(shù)可以把界面的開發(fā)與程序邏輯的開發(fā)分離開。Web開

17、發(fā)人員使用HTML或XML標(biāo)記來設(shè)計(jì)界面,使用JSP標(biāo)記或腳本生成頁面上的動(dòng)態(tài)容。生成容的邏輯被封裝在標(biāo)識和JavaBean組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。JSP技術(shù)使得開發(fā)人員的分工更加明確,頁面設(shè)計(jì)者可以修改容而不影響邏輯,應(yīng)用程序的開發(fā)者可以修改邏輯而不影響容。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識和小腳本,生成所請求的容(例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫,或者包含文件),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護(hù)自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。b) 生成可重用的組件絕大多

18、數(shù)JSP頁面依賴于可重用的、跨平臺的組件來執(zhí)行應(yīng)用程序要求的復(fù)雜處理。開發(fā)人員可以共享和交換組件,或把這些組件提供給更多的用戶使用?;诮M件的開發(fā)方法有效地提高了應(yīng)用程序的開發(fā)效率,加速了項(xiàng)目的總體開發(fā)進(jìn)程。c) 應(yīng)用標(biāo)記簡化頁面的開發(fā)JSP技術(shù)封裝了許多功能,這些功能是生成與JSP相關(guān)的HTML或XML的動(dòng)態(tài)容時(shí)所需要的。標(biāo)準(zhǔn)的JSP標(biāo)記能夠訪問和實(shí)例化JavaBeans組件,設(shè)置或檢索組件的屬性,下載Applet,以與執(zhí)行使用其他方法難以實(shí)現(xiàn)的功能。JSP標(biāo)記具有可擴(kuò)充性,允許開發(fā)者擴(kuò)展JSP標(biāo)記,開發(fā)人員也能夠定制常用功能標(biāo)記庫。第三方或其他開發(fā)人員也可以創(chuàng)建自己的標(biāo)記庫。由于頁面制作者

19、可以使用標(biāo)記庫中的功能,因此大大減少了對腳本語言的依賴,并降低了頁面制作的復(fù)雜度。d) 具有Java的特點(diǎn)由于JSP頁面的置腳本是基于Java語言的,而且所有的JSP頁面都被編譯成Java Servlet,所以JSP具有Java的特點(diǎn),如健壯的存儲管理、安全性、跨平臺特性、“一次編寫,各處運(yùn)行”等。3.2 Hibernate框架3.2.1 Hibernate簡介Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲地使用對象編程思維來操縱數(shù)據(jù)庫。Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序

20、使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用E的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。3.2.2 Hibernate核心接口Hibernate的核心接口一共有6個(gè),分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。Session接口負(fù)責(zé)執(zhí)行被持久化對象的CRUD操作。但值得注意的是Session對象是非線程安全的。SessionFactory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲源的代理,并負(fù)責(zé)創(chuàng)建Session對象。這里用到了工廠

21、模式。值得注意的是SessionFactory并不是輕量級的,因?yàn)檫@需要一個(gè)很大的緩存,用來存放預(yù)定義的SQL語句以與映射元數(shù)據(jù)。一個(gè)工作單元通常指一個(gè)數(shù)據(jù)庫事務(wù)。一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就足夠了,當(dāng)需要操作多個(gè)數(shù)據(jù)庫時(shí),可以為每個(gè)數(shù)據(jù)庫指定一個(gè)SessionFactory。Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫查詢。它可以使用HQL語言或SQL語句兩種表達(dá)方式。Configuration類負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建SessionFactory對象。

22、在hibernate啟動(dòng)過程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建Sessionfactory對象。3.2.3 Hibernate特點(diǎn)Hibernate框架具有以下優(yōu)點(diǎn),從而使得其成為目前最為流行的J2EE開源框架之一:a)Hibernate是JDBC的輕量級對象封裝,它是一個(gè)獨(dú)立的對象持久層框架,有很少的核心類,和App Servlet、E沒有必然聯(lián)系。學(xué)習(xí)成本和代價(jià)較低,初學(xué)者完全可以在一個(gè)小時(shí)安裝、配置好系統(tǒng),并開發(fā)出第一個(gè)Hibernate程序。b)編程代碼量大大減少,Hibernate把開發(fā)者從繁重的編程工作中解放出來。c)基于Hibernat

23、e開發(fā)的各種應(yīng)用系統(tǒng)可維護(hù)性好,系統(tǒng)修改十分方便。d)Hibernate是一種非強(qiáng)迫性解決方案。開發(fā)者在寫業(yè)務(wù)邏輯與持續(xù)性類時(shí),不必遵循許多Hibernate特定的規(guī)則和設(shè)計(jì)模式。這樣,Hibernate可以與大多數(shù)新的和現(xiàn)有的應(yīng)用平穩(wěn)集成,而不需要對應(yīng)用的其他部分作破壞性修改。e)Hibernate致力于稱為Java管理持續(xù)性數(shù)據(jù)問題的一種全面解決方案,強(qiáng)調(diào)協(xié)調(diào)與關(guān)系數(shù)據(jù)庫的交互,強(qiáng)調(diào)開發(fā)者的重心應(yīng)放在業(yè)務(wù)問題上,而不是技術(shù)問題。3.2.4 Hibernate配置org.hibernate.dialect.MySQLDialecttrue配置緩存插件 org.hibernate.cache.

24、EhCacheProvider truetrue3.3 數(shù)據(jù)庫連接池3.3.1 數(shù)據(jù)庫連接池概述數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。對數(shù)據(jù)庫連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫連接池正是針對這個(gè)問題提出來的。數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個(gè);釋放空閑時(shí)間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項(xiàng)技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。3.3.2 C3p0連接池配置C3p0是一個(gè)開放源代碼的J

25、DBC連接池,它在lib目錄中與Hibernate一起發(fā)布,包括了實(shí)現(xiàn)jdbc3和jdbc2擴(kuò)展規(guī)說明的Connection和Statement池的DataSources對象。C3p0數(shù)據(jù)庫連接池配置信息: 連接池中保留的最接數(shù)。 初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。 最大空閑時(shí)間,60秒未使用則連接被丟棄。若為0則永不丟棄。 當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。 定義在從數(shù)據(jù)庫獲取新連接失敗后重復(fù)嘗試的次數(shù)。 兩次連接中間隔時(shí)間,單位毫秒。 連接關(guān)閉時(shí)默認(rèn)將所有未提交的操作回滾。 C3p0將建一名為Test的空表,并使用其自帶

26、的查詢語句進(jìn)行測試。如果定義了這個(gè)參數(shù)那么屬性preferredTestQuery將被忽略。你不能在這Test表上進(jìn)行任何操作,它將只供C3p0測試使用。 每60秒檢查所有連接池中的空閑連接。 當(dāng)連接池用完時(shí)客戶端調(diào)用getConnection()后等待獲取新連接的時(shí)間,超時(shí)后將拋出。SQLException,如設(shè)為0則無限期等待,單位毫秒。 3.4 Log4j日志3.4.1 Log4j簡介程序開發(fā)環(huán)境中的日志記錄是由嵌入在程序中以輸出一些對開發(fā)人員有用信息的語句所組成。例如,跟蹤語句(trace),結(jié)構(gòu)轉(zhuǎn)儲和常見的system.out.println或printf調(diào)試語句。log4j提供分級

27、方法在程序中嵌入日志記錄語句。日志信息具有多種輸出格式和多個(gè)輸出級別。使用一個(gè)專門的日志記錄包,可以減輕對成千上萬的system.out.println語句的維護(hù)成本,因?yàn)槿罩居涗浛梢酝ㄟ^配置腳本在運(yùn)行時(shí)得以控制。log4j維護(hù)嵌入在程序代碼中的日志記錄語句。通過規(guī)日志記錄的處理過程,一些人認(rèn)為應(yīng)該鼓勵(lì)更多的使用日志記錄并且獲得更高程度的效率。3.4.2 Log4j日志配置# direct log messages to stdout and file#log4j.rootCategory=INFO.stdout#duct.business=INFO

28、#duct.dao=INFO#duct.controller=INFOlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p(%F:%L)%c1:%L - %m%.hibernate=debug log4j

29、.logger.ibatis=debuglog4j.logger.ibatis mon.jdbc.SimpleDataSource=debuglog4j.logger.ibatis mon.jdbc.ScriptRunner=debuglog4j.logger.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debuglog4j.logger.java.sql.Connection=debuglog4j.logger.java.sql.Statement=debuglog4j.logger.java.sql.PreparedStatement=de

30、bug,stdout3.5 開發(fā)工具3.5.1 Eclipse簡介Eclipse平臺是一個(gè)具有一組強(qiáng)大服務(wù)的框架,這些服務(wù)支持插件,比如Java開發(fā)環(huán)境插件(JDT)、插件開發(fā)環(huán)境(PDE)和其他的第三方插件(Newtool)。它由幾個(gè)主要的部分構(gòu)成:平臺運(yùn)行庫、工作區(qū)、工作臺、團(tuán)隊(duì)支持和幫助。平臺運(yùn)行庫是核,它在啟動(dòng)時(shí)檢查已安裝了哪些插件,并創(chuàng)建關(guān)于它們的注冊表信息。為降低啟動(dòng)時(shí)間和資源使用,它在實(shí)際需要任何插件時(shí)才加載該插件。除了核外,其他每樣?xùn)|西都是作為插件來實(shí)現(xiàn)的。工作區(qū)是負(fù)責(zé)管理用戶資源的插件。這包括用戶創(chuàng)建的項(xiàng)目、那些項(xiàng)目中的文件,以與文件變更和其他資源。工作區(qū)還負(fù)責(zé)通知其他插件關(guān)

31、于資源變更的信息,比如文件創(chuàng)建、刪除或更改。工作臺為Eclipse提供用戶界面。它是使用標(biāo)準(zhǔn)窗口工具包(SWT)和一個(gè)更高級的API(JFace)來構(gòu)建的。3.5.2 Tomcat簡介Tomcat服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,是Apache軟件基金會的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其他一些公司與個(gè)人共同開發(fā)而成。因?yàn)門omcat技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web應(yīng)用服務(wù)器。Tomcat運(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還

32、在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。這個(gè)小型的輕量級應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調(diào)試JSP程序的首選。當(dāng)配置正確時(shí),Apache為HTML頁面服務(wù),而Tomcat實(shí)際上運(yùn)行JSP頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務(wù)器一樣,具有處理HTML頁面的功能,另外它還是一個(gè)Servlet和JSP容器,獨(dú)立的Servlet容器是Tomcat的默認(rèn)模式。3.5.3 MySQL Server 簡介MySQL是一個(gè)開放源碼的小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQLAB公司,目前M

33、ySQL被廣泛地應(yīng)用在Internet上的中小型中。提供由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型為了降低總體擁有成本而選擇了MySQL作為數(shù)據(jù)庫。MySQL的核心程序采用完全的多線程編程。線程是輕量級的進(jìn)程,它可以靈活地為用戶提供服務(wù),而不占用過多的系統(tǒng)資源。可運(yùn)行在不同的操作系統(tǒng)下。MySQL有一個(gè)非常靈活而且安全的權(quán)限和口令系統(tǒng)。當(dāng)客戶與MySQL服務(wù)器連接時(shí),他們之間所有的口令傳送被加密,而且MySQL支持主機(jī)認(rèn)證。MySQL支持大型的數(shù)據(jù)庫,可以方便地支持上千萬條記錄的數(shù)據(jù)庫。擁有一個(gè)非??焖俣曳€(wěn)定的基于線程的存分配系統(tǒng),可以持續(xù)使用面不必?fù)?dān)心其穩(wěn)定性

34、。支持查詢的SELECT和WHERE語句的全部運(yùn)算符和函數(shù),并且可以在同一查詢中混用來自不同數(shù)據(jù)庫的表,從而使得查詢變得快捷和方便。4 總體設(shè)計(jì)4.1 系統(tǒng)組成系統(tǒng)由用戶信息管理、聯(lián)系人信息管理、留言板三部分組成。用戶信息管理包括用戶注冊和用戶登錄;聯(lián)系人管理包括添加聯(lián)系人、刪除聯(lián)系人、修改聯(lián)系人、聯(lián)系人分組和聯(lián)系人查詢;留言板包括添加留言、刪除留言和查看留言列表。4.1.1 用戶管理用戶登錄:登錄界面為用戶提供用戶登錄,用戶首先需要選擇登陸對象,然后輸入用戶名和密碼,系統(tǒng)將數(shù)據(jù)提交到后臺進(jìn)行處理,如果校驗(yàn)成功,則跳轉(zhuǎn)到系統(tǒng)主界面,并將用戶對象保存在session;如果校驗(yàn)失敗,則報(bào)錯(cuò)。用戶注

35、冊模塊:用戶在登錄界面點(diǎn)擊“注冊”,就可以進(jìn)入到注冊界面,在這里用戶必須填寫好自己的各項(xiàng)資料,如:用戶名、密碼、性別、年齡、聯(lián)系方式、地址、等。這些信息將為其他用戶查詢聯(lián)系人信息提供方便。4.1.2 聯(lián)系人管理聯(lián)系人管理模塊包括添加聯(lián)系人,刪除聯(lián)系人,修改聯(lián)系人信息等。添加聯(lián)系人:用戶登錄成功后點(diǎn)擊添加聯(lián)系人,進(jìn)入添加聯(lián)系人頁面,輸入聯(lián)系人的、性別、年齡、聯(lián)系方式、地址、,點(diǎn)擊保存按鈕,顯示添加成功,返回主頁面。刪除聯(lián)系人:把已經(jīng)存儲過的聯(lián)系人進(jìn)行刪除。修改聯(lián)系人信息:用戶登錄成功后可以對已經(jīng)存儲的聯(lián)系人信息進(jìn)行修改,與時(shí)更新,方便聯(lián)系。聯(lián)系人查詢:用戶成功登陸后可以,可以根據(jù)關(guān)鍵字或者查詢聯(lián)

36、系人信息。聯(lián)系人分組:用戶增加聯(lián)系人時(shí)可以對聯(lián)系人進(jìn)行分組操作,這樣有助于對聯(lián)系人管理,方便查詢。4.1.3 留言板普通用戶登錄成功后可以在留言板模塊留言,其他用戶登錄后可以看到此留言。管理員登錄成功后可以對留言板容進(jìn)行管理。普通用戶只能填寫留言和查看留言,只有管理員才能刪除留言。4.2 系統(tǒng)結(jié)構(gòu)圖系統(tǒng)包括三個(gè)部分,用戶管理、聯(lián)系人管理和留言板。用戶管理部分包括用戶注冊和用戶登錄;聯(lián)系人管理包括添加聯(lián)系人、刪除聯(lián)系人、修改聯(lián)系人、查詢聯(lián)系人和聯(lián)系人分組,查詢聯(lián)系人包括查詢和分組查詢;留言板包括填寫留言、刪除留言和查看留言。如圖4.1所示。圖4.1 系統(tǒng)結(jié)構(gòu)圖5 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)5.1 用戶注冊5

37、.1.1數(shù)據(jù)庫表單表5.1 用戶注冊表字段名稱數(shù)據(jù)類型長度是否允許為空說明UserIDInt4否用戶IDUserNameVarchar50否用戶UserpwdVarchar50否用戶密碼UsersexChar10否用戶性別Useragevarchar50否用戶年齡UserPhonevarchar50否聯(lián)系方式Useremailvarchar50否聯(lián)系UserAddressvarchar50否5.1.2 數(shù)據(jù)庫實(shí)體圖用戶注冊實(shí)體包括用戶名、密碼、性別、年齡、地址、手機(jī)號、。實(shí)體圖如圖5.1所示。圖5.1 用戶注冊實(shí)體圖5.1.3 處理流程圖用戶登錄,后臺判斷是否有注冊號,如果沒有正確的注冊號彈出

38、請注冊頁面,填寫注冊信息,保存,判斷操作成功是否成功,顯示相應(yīng)的成功提示和錯(cuò)誤提示。如果有注冊號直接進(jìn)入主頁面。流程圖如圖5.2所示。圖5.2 用戶注冊流程圖5.1.4部分實(shí)現(xiàn)代碼管理員注冊部分代碼:public String addUserInfo()userService.save(user);return null;Overridepublic void save(User user) userDao.save(user);相應(yīng)的Hibernate操作:public void save(User user) this.getHibernateTemplate().save(user);5

39、.1.5 實(shí)現(xiàn)后界面示意圖圖5.3 新用戶注冊示意圖5.2用戶登錄5.2.1 數(shù)據(jù)庫表單字段含義類型長度默認(rèn)值NULL/主鍵UserID用戶IDvarchar50不允許空UserName用戶名varchar50不允許空Userpwd密碼varchar20不允許空表5.2 用戶登錄表5.2.2 數(shù)據(jù)庫實(shí)體圖用戶登錄實(shí)體包括用戶ID、用戶名和用戶密碼。如圖5.4所示。圖5.4 用戶登錄數(shù)據(jù)庫實(shí)體圖5.2.3 流程示意圖用戶登錄,輸入用戶名和密碼,后臺數(shù)據(jù)庫檢驗(yàn)是否正確,正確進(jìn)入主頁面,否則錯(cuò)誤提示。如圖5.5所示。進(jìn)入主頁面輸入用戶名、密碼錯(cuò)誤提示判斷數(shù)據(jù)輸入是否合法?結(jié) 束 登 錄圖5.5 用戶

40、登錄流程圖5.2.4部分實(shí)現(xiàn)代碼用戶登錄部分代碼:public String login()int state = userService.login(user);String info = 該用戶不存在!;if(state = 0)getRequest().setAttribute(info, info);return login;if(state = 2)info=用戶密碼錯(cuò)誤!;getRequest().setAttribute(info, info);return login;用戶登錄Hibernate操作:public User login(User user) / TODO Aut

41、o-generated method stubString value=user.getUserName();String queryString = FROM User where userName =?;User DBuser =(User) this.getHibernateTemplate().find(queryString,value).get(0);return DBuser;5.2.5實(shí)現(xiàn)后界面示意圖圖5.6 用戶登錄示意圖5.3 聯(lián)系人管理5.3.1 數(shù)據(jù)庫表單表5.3 聯(lián)系人表字段含義類型長度默認(rèn)值NULL/主鍵idIDint4主鍵/自增groupId所屬組IDint4外鍵

42、namevarchar50sex性別是/否4address住址varchar255mobile手機(jī)varchar15mailvarchar50字段含義類型長度默認(rèn)值NULL/主鍵varchar15memory備注varchar2555.3.2 數(shù)據(jù)庫實(shí)體圖聯(lián)系人實(shí)體包括、性別、年齡、 、住址、備注。實(shí)體圖如圖5.7所示。圖5.7 聯(lián)系人數(shù)據(jù)庫實(shí)體圖5.3.3流程示意圖圖5.8 管理聯(lián)系人流程圖首先是用戶登錄,后臺判斷登錄號是否正確,正確進(jìn)入主頁面,對聯(lián)系人進(jìn)行管理,包括添加、刪除、修改、分組和查詢。操作成功顯示成功提示,否則顯示錯(cuò)誤提示。5.3.4部分實(shí)現(xiàn)代碼聯(lián)系人添加或者修改部分代碼:pub

43、lic String saveOrUpdate()String id= getRequest().getParameter(id);if(null=id|id.equals()contantService.save(contant);return SUCCESS;elsecontantService.update(contant);contantList=contantService.listContantByConditon(contant);return contantDiv;public String viewContant()contantList=contantService.lis

44、tContantByConditon(contant);return SUCCESS;查詢聯(lián)系人部分代碼:public String listContantByConditon()contantList=contantService.listContantByConditon(contant);return contantDiv;刪除聯(lián)系人部分代碼:public String delete()String id= getRequest().getParameter(id);contantService.delete(id);contantList=contantService.listCont

45、antByConditon(contant);return contantDiv;以下代碼是相應(yīng)的Hibernate操作:保存聯(lián)系人:public void save(Contant contant) this.getHibernateTemplate().save(contant);更新聯(lián)系人:public void update(Contant contant) this.getHibernateTemplate().update(contant);查詢聯(lián)系人:SuppressWarnings(unchecked)public Contant findById(String id) Str

46、ing queryString = From Contant where id= +id;List list = this.getHibernateTemplate().find(queryString);Contant contant =new Contant();if(list.size()0)contant =(Contant) list.get(0);return contant;刪除聯(lián)系人:public void delete(String id) String sql = delete From Contant where id =+id;Query query = this.ge

47、tHibernateTemplate().getSessionFactory().openSession().createQuery(sql);query.executeUpdate();5.3.5實(shí)現(xiàn)后界面示意圖圖5.9 添加聯(lián)系人界面示意圖5.4 留言板5.4.1 數(shù)據(jù)庫表單表5.4 留言板表字段名稱數(shù)據(jù)類型長度是否允許為空說明IdInt4否主鍵UserNameInt4否用戶名稱ContentChar500否容5.4.2 數(shù)據(jù)庫實(shí)體圖留言板實(shí)體包括用戶名、留言容、留言列表。如圖5.10所示。圖5.10留言板數(shù)據(jù)庫實(shí)體圖5.4.3 流程示意圖圖5.11留言板流程圖5.4.4 部分實(shí)現(xiàn)代碼發(fā)表

48、留言部分代碼:public String insertMessage()SimpleDateFormat date=new SimpleDateFormat(yyyy-MM-dd);String dateTime=date.format(new Date();message.setDateTime(dateTime);messageService.insertMessage(message);return SUCCESS;public String insertMessagePage()return SUCCESS;刪除留言部分代碼:public String deleteMessage()S

49、tring id= getRequest().getParameter(id);messageService.deleteMessage(id);messageList =messageService.listMessage();return SUCCESS;留言列表部分代碼:public String viewMessageList()messageList =messageService.listMessage();return SUCCESS;public String findMessage()String id= getRequest().getParameter(id);messa

50、ge = messageService.findMessageById(id);return SUCCESS;以下是Hibernate操作:填寫留言部分:public void insertMessage(Message message) this.getHibernateTemplate().save(message);public List listMessage() String queryString = From Message;SuppressWarnings(unchecked)List messageList = this.getHibernateTemplate().find(queryString);return messageList;查看留言部分:public Message findMessageById(String id) String sql = From Message where id=+id;SuppressWarnings(rawtypes)List l = this.getHibernateTemplate().find(sql);Message

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論