版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 摘要1</b></p><p> Abstract2</p><p><b> 第一章 緒論4</b></p><p> 1.1OA概述4</p><p> 1
2、.2技術(shù)背景4</p><p> 1.3課題研究的意義及可行性4</p><p> 第二章Struts介紹5</p><p> 2.1 MVC模式簡介5</p><p> 2.1.1 模型6</p><p> 2.1.2 視圖6</p><p> 2.1.3 控制層
3、6</p><p> 2.2 Struts框架的結(jié)構(gòu)及實(shí)現(xiàn)方法6</p><p> 2.2.1Struts框架的組成7</p><p> 2.2.1 Struts的基本組件7</p><p> 2.2.2 Struts的工作過程9</p><p> 2.3 Struts的國際化9</p>
4、;<p> 第三章 Hibernate框架介紹10</p><p> 3.1 數(shù)據(jù)庫操作的3個(gè)階段10</p><p> 3.2 ORM對象關(guān)系映射12</p><p> 3.3 Hibernate介紹及工作過程13</p><p> 3.3.1 Hibernate的組成13</p><
5、p> 3.3.2 Hibernate的工作過程14</p><p> 第四章 系統(tǒng)功能的實(shí)現(xiàn)及部署15</p><p> 4.1 系統(tǒng)概述15</p><p> 4.2 系統(tǒng)分析16</p><p> 4.2.1 需求分析16</p><p> 4.2.2 可行性分析16</p>
6、;<p> 4.3 系統(tǒng)設(shè)計(jì)16</p><p> 4.3.1 總體設(shè)計(jì)16</p><p> 4.3.2 詳細(xì)設(shè)計(jì)17</p><p> 4.3.3 確定并搭建開發(fā)環(huán)境,并對開發(fā)環(huán)境進(jìn)行測試20</p><p> 4.3.4系統(tǒng)實(shí)現(xiàn)21</p><p> 4.3.5 系統(tǒng)的部署及運(yùn)
7、行30</p><p> 第五章 開發(fā)總結(jié)及前景31</p><p><b> 致謝31</b></p><p><b> 參考文獻(xiàn)32</b></p><p><b> 摘要</b></p><p> 財(cái)務(wù)報(bào)銷系統(tǒng)是將財(cái)務(wù)報(bào)銷和計(jì)算機(jī)
8、技術(shù)結(jié)合起來的一種新型的辦公方式,是信息化社會(huì)的產(chǎn)物。通過網(wǎng)絡(luò),組織機(jī)構(gòu)內(nèi)部的人員可跨越時(shí)間、空間進(jìn)行操作。通過財(cái)務(wù)報(bào)銷系統(tǒng)所實(shí)施的交換式網(wǎng)絡(luò)應(yīng)用,使信息的傳遞更加快捷和方便,從而極大地?cái)U(kuò)展了辦事效率。</p><p> 財(cái)務(wù)報(bào)銷系統(tǒng),是以網(wǎng)絡(luò)為依托,在企業(yè)內(nèi)部進(jìn)行暢通的信息交流。在這種模式下,它所屬的財(cái)務(wù)、人事都成為企業(yè)信息流中的獨(dú)立的一個(gè)環(huán)節(jié),而不再為安全過分擔(dān)憂。依靠這種模式,企業(yè)的組織結(jié)構(gòu)能夠得到簡化,
9、各個(gè)部門在信息共享的基礎(chǔ)上進(jìn)行協(xié)作,藕合性大大減低,便于明確各個(gè)部門甚至每個(gè)員工的責(zé)任,而決策層可以迅速綜合來自各個(gè)方而的信息,并此為依據(jù)制定企業(yè)的戰(zhàn)略決策。沒有人懷疑計(jì)算機(jī)的出現(xiàn)給辦公室職員帶來的便利,但是對現(xiàn)代的企業(yè)人事煩雜,為了減輕員工的工作量,要將員工從繁瑣的事務(wù)性工作中解放出來,用更多的精力去關(guān)注最重要的事情,從而提高企業(yè)的效率,增強(qiáng)企業(yè)的綜合競爭能力。</p><p> 隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展及企
10、業(yè)管理模式的不斷變化,目前,以傳統(tǒng)人力為主的財(cái)務(wù)報(bào)銷系統(tǒng)已不能很好滿足企業(yè)辦公的需求,難以充公整合新技術(shù)的特點(diǎn),進(jìn)而無法充分發(fā)揮新管理模式的優(yōu)勢,并且要針對不同的人尋找不同的資料大大增加了工作的難度和煩索程度。本文從企業(yè)的實(shí)際情況出發(fā),在用戶需求分析的基礎(chǔ)上,提出企業(yè)財(cái)務(wù)報(bào)銷基本目標(biāo),并闡述系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和功能設(shè)計(jì),設(shè)計(jì)了一種基于WEB的網(wǎng)絡(luò)財(cái)務(wù)報(bào)銷系統(tǒng),系統(tǒng)建立在Browser/Servr/Database三層構(gòu)架之上,并且本系統(tǒng)采用M
11、VC(Model,View,Controller)三層架構(gòu),并且本系統(tǒng)采用了可跨平臺(tái)的Java語言作為主要開發(fā)語言,并使用了基于MVC三層架構(gòu)的Struts框架和實(shí)現(xiàn)了O/R(Object/Relation)的Hibernate框架等J2EE的主流框架,并對本系統(tǒng)進(jìn)行了國際化,從而大大增加了系統(tǒng)的靈活性和可擴(kuò)展性。并且本系統(tǒng)采用Mysql數(shù)據(jù)庫,從而降低了對運(yùn)行環(huán)境配置的要求。</p><p> 關(guān)鍵字:Hib
12、ernate,Struts,O/R,MVC,OA,JSP ,SiteMesh</p><p><b> Abstract</b></p><p> Transact the automation(the OA-Office Automation) is to transact modernization to put together with the calcu
13、lator network function knot of a kind of transacts a way newly, is a very active in the current new technique revolution with have very strong vitality of technique applied realm is the outcome of the information-based s
14、ociety.Pass a network, organize the organization insider member can cross over time,space to be in conjunction with a work.Passes the commutation type network application </p><p> Now say of transact automa
15、tion, should take network as to rely on, carry on unimpeded information exchanges in the business enterprise inner part.Under this kind of mode, the business enterprise becomes a big office, it the finance,personnel,admi
16、nistration,business belong to etc. the sections all become the business enterprise information to flow in of a link, but Be not the information isolated island of the single any more.Depend on this kind of mode, the orga
17、nization structure of the business</p><p> As the developing of the network technology and the variety of the management, at present, the office automation systems using conventional Client/Server do not we
18、ll satisfy the need of network office and can hardly make a full use of new technique, so they could not take the advantage of new management. And we have to develop different client program for different Running- Enviro
19、nment and different Operating System which by a long way augments the difficulty of the program development and updat</p><p> Keywords:Hibernate,Struts,O/R,MVC,OA,JSP</p><p><b> 第一章 緒論&l
20、t;/b></p><p><b> 財(cái)務(wù)報(bào)銷系統(tǒng)概述</b></p><p> 在當(dāng)今計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和計(jì)算機(jī)技術(shù)飛速發(fā)展,人們普遍使用計(jì)算機(jī)來提高個(gè)人工作效率,但是在需要許多人一起協(xié)同工作的現(xiàn)代工作環(huán)境中,我們更需要提高我們的整體工作效率。利用網(wǎng)絡(luò)通訊基礎(chǔ)及先進(jìn)的網(wǎng)絡(luò)應(yīng)用平臺(tái),建設(shè)一個(gè)安全、可靠、開放、高效的財(cái)務(wù)報(bào)銷系統(tǒng)。</p><p
21、> 傳統(tǒng)財(cái)務(wù)報(bào)銷主要以紙介質(zhì)為主,在信息革命的浪潮中,顯然已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足高效率、快節(jié)奏的現(xiàn)代工作和生活的需要。如何實(shí)現(xiàn)信息處理的自動(dòng)化和辦公的無紙化逐步得到了人們的重視。</p><p> 網(wǎng)絡(luò)財(cái)務(wù)報(bào)銷系統(tǒng)效果并不明顯,人們還是儀在單機(jī)字處理和表格處理的所謂的初級階段,信息的交流和共享,以及團(tuán)隊(duì)的協(xié)同工作無法很好的實(shí)現(xiàn),極大地限制了工作的效率,Internet/Intranet的迅猛發(fā)展,為信息的交流
22、和共享,團(tuán)隊(duì)的協(xié)同運(yùn)作提供了技術(shù)的保證,同時(shí)也預(yù)示著網(wǎng)絡(luò)化辦公時(shí)代的來臨。</p><p><b> 技術(shù)背景</b></p><p> 隨著Internet技術(shù)的飛速發(fā)展,基于B/S結(jié)構(gòu)的服務(wù)應(yīng)用程序得到了廣泛的應(yīng)用,實(shí)現(xiàn)Web應(yīng)用的技術(shù)和框架也層出不窮,當(dāng)今軟件開發(fā)出現(xiàn)了兩大應(yīng)用技術(shù)標(biāo)準(zhǔn):微軟的.NET和SUN公司提出的J2EE,這兩種技術(shù)各有其優(yōu)缺點(diǎn),J2E
23、E的安全性及可移植性優(yōu)于.NET,但是J2EE的企業(yè)級應(yīng)用需要專門的Container,及Server,需要花費(fèi)大量的資金在軟件的運(yùn)行和維護(hù)上。但是隨著J2EE技術(shù)的不斷成熟,并且大量開源框架的出現(xiàn),J2EE的優(yōu)勢日漸突出,且J2EE采用可跨平臺(tái)運(yùn)行的Java語言作為其主要開發(fā)語言,能夠在不同的平臺(tái)上運(yùn)行,因此越來越受到企業(yè)的歡迎。</p><p> 課題研究的意義及可行性</p><p&g
24、t; 本文通過整合一些開源的J2EE框架來搭建一個(gè)開發(fā)平臺(tái),結(jié)合Struts框架和Hibernate的數(shù)據(jù)持久化機(jī)制來構(gòu)建一個(gè)輕量級的Web開發(fā)框架,并利用此框架來開發(fā)一個(gè)基于B/S的辦公自動(dòng)化系統(tǒng),以此來說明Struts和Hibernate的整合過程。選擇這種開發(fā)框架的優(yōu)點(diǎn)有以下幾個(gè):</p><p> 1.快速開發(fā)。Struts是一個(gè)成熟的Web層框架,稱為A Half Done Application,
25、開發(fā)者只需要在需要的地方加入自己的處理邏輯,并且許多參數(shù)的設(shè)置是在配置文件中,需要修改時(shí)開發(fā)者只需要修改配置文件即可,而不需要去修改代碼的每個(gè)地方,這種開發(fā)框架已經(jīng)廣泛應(yīng)用在許多行業(yè)的系統(tǒng)中,如交通,電力,銀行,通信等。</p><p> 2.Hibernate的數(shù)據(jù)持久化。Hibernate是一個(gè)基于O-R(Object-Relation)的框架,真正的適用于面向?qū)ο蟮拈_發(fā)思想。開發(fā)著只需要對對應(yīng)的Class
26、進(jìn)行操作就可以方便的實(shí)現(xiàn)對數(shù)據(jù)庫的操作。并且Hibernate框架中實(shí)現(xiàn)了許多對數(shù)據(jù)庫中數(shù)據(jù)的操作方法,方便了Developer的開發(fā)。相對于使用JDBC開發(fā)更方便,快捷。</p><p> 3.成本低。Struts,Hibernate,以及所使用的開發(fā)環(huán)境及運(yùn)行環(huán)境采用的都是開源軟件,大降低了開發(fā)和運(yùn)行的成本,更適合中小企業(yè)的開發(fā)。</p><p> 3可擴(kuò)展性。Struts和Hib
27、ernate的使用降低的項(xiàng)目各個(gè)模塊之間的耦合度,因此企業(yè)很容易對項(xiàng)目的某個(gè)模塊進(jìn)行擴(kuò)展或者進(jìn)行二次開發(fā)。由于此框架容易與其他的J2EE框架整合,更是大大提高了系統(tǒng)的可擴(kuò)展性。</p><p><b> Struts介紹</b></p><p> Struts是一種實(shí)現(xiàn)了MVC模式的框架,全部的請求都由一個(gè)被稱為ActionServlet的Servlet來接收并控
28、制。Struts并沒有取代Jsp,Servlet,只是將其組織起來。</p><p> 2.1 MVC模式簡介</p><p> MVC是一種設(shè)計(jì)模式,是Model-View-Controller的簡寫,它把整個(gè)應(yīng)用系統(tǒng)的輸入、處理、輸出分開,其結(jié)構(gòu)圖如圖2-1:</p><p><b> 圖2-1</b></p><
29、p><b> 2.1.1 模型</b></p><p> 模型是應(yīng)用程序的核心,負(fù)責(zé)處理用戶的數(shù)據(jù)和實(shí)現(xiàn)業(yè)務(wù)邏輯的處理,并且為視圖提供數(shù)據(jù),用戶所有的數(shù)據(jù)操作和業(yè)務(wù)邏輯的處理全部都由模型層處理。</p><p><b> 2.1.2 視圖</b></p><p> 視圖是一些JSP頁面,是系統(tǒng)與用戶交互的界面
30、,即常稱的UI(User interface),視圖用戶來接收用戶的輸入,在MVC模式中,視圖層不包括任何業(yè)務(wù)邏輯的處理,它只是為Model提供數(shù)據(jù)及為用戶顯示Model層更新的數(shù)據(jù)。</p><p><b> 2.1.3 控制層</b></p><p> 控制層也稱為控制器,當(dāng)用戶提交請求時(shí),控制器接收用戶的請求并根據(jù)用戶提交的數(shù)據(jù)決定調(diào)用哪些模型來進(jìn)行業(yè)務(wù)處理
31、,同時(shí)將用戶提交的數(shù)據(jù)提供給Model層,由Model來進(jìn)行數(shù)據(jù)處理,然后將處理的結(jié)果給視圖的形式返回給用戶,從而實(shí)現(xiàn)用戶和系統(tǒng)的交互。</p><p> 2.2 Struts框架的結(jié)構(gòu)及實(shí)現(xiàn)方法</p><p> Struts是Apache軟件組織提供的一個(gè)開源項(xiàng)目,為Java Web應(yīng)用提供MVC框架,適用于開發(fā)大型可擴(kuò)展的Web應(yīng)用。在MVC剛剛出現(xiàn)的時(shí)候,開發(fā)人員需要花大量的時(shí)
32、間在MVC模式的實(shí)現(xiàn)上,而Struts則恰恰實(shí)現(xiàn)了這種開發(fā)模式,開發(fā)人員只需在此基礎(chǔ)去實(shí)現(xiàn)自己的邏輯處理,而不?;ㄙM(fèi)大量的時(shí)間在模式的實(shí)現(xiàn)上。</p><p> 2.2.1Struts框架的組成</p><p> Struts對應(yīng)MVC的三層分別有對應(yīng)的實(shí)現(xiàn)方法:Struts中的Java Bean以及大型項(xiàng)目中的EJB對應(yīng)MVC中的Model層,MVC的Controller層對應(yīng)Str
33、uts的Action及ActionServlet,Struts的ActionForm以及JSP頁面對應(yīng)MVC的視圖層,在視圖層Struts提供了大量的標(biāo)簽庫用來顯示數(shù)據(jù),Struts的各個(gè)組成部分全部由Struts的主配置文件Struts-config.xml聯(lián)系在一起。</p><p> 2.2.1 Struts的基本組件</p><p> Struts主要由四個(gè)核心組件組成:Act
34、ionServlet,Action,F(xiàn)ormBean,ActionMapping,另外Struts還提供了功能強(qiáng)大的標(biāo)簽庫(Taglib),用來供客戶端顯示用。</p><p> 1)ActionServlet</p><p> ActionServlet是Javax.servlet.http.HttpServlet的子類,是Struts框架的主控制器,根據(jù)用戶的請求和配置文件和描述將
35、請求轉(zhuǎn)發(fā)給相應(yīng)的Action,Servlet必須在Http Application的Web.xml的配置文件中聲明,因此在Struts中同樣也在Web.xml中對ActionServlet進(jìn)行了配置:</p><p><b> <servlet></b></p><p> <servlet-name>action</servlet-n
36、ame> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class></p><p> <init-param></p><p> <param-name>config</param-name></p><p>
37、 <param-value>/WEB-INF/struts-config.xml</param-value></p><p> </init-param></p><p> <init-param></p><p> <param-name>debug</param-name></
38、p><p> <param-value>3</param-value></p><p> </init-param></p><p> <init-param></p><p> <param-name>detail</param-name></p>&
39、lt;p> <param-value>3</param-value></p><p> </init-param></p><p> <load-on-startup>0</load-on-startup></p><p> </servlet></p><p&
40、gt; <servlet-mapping></p><p> <servlet-name>action</servlet-name></p><p> <url-pattern>*.do</url-pattern></p><p> </servlet-mapping></p>
41、;<p> ActionServlet會(huì)匹配所有的以.do結(jié)尾的請求,并讀取配置文件里配置的Config對應(yīng)的Struts的配置文件中的Action,從而將請求轉(zhuǎn)交給對應(yīng)的Action調(diào)用相應(yīng)的業(yè)務(wù)處理方法進(jìn)行處理。</p><p><b> 2)Action</b></p><p> 當(dāng)ActionServlet得到用戶的請求后,將請求轉(zhuǎn)發(fā)給Ac
42、tion,然后由Action調(diào)用相應(yīng)的業(yè)務(wù)邏輯處理方法進(jìn)行處理。</p><p> 3)ActionMapping</p><p> 當(dāng)Action進(jìn)行業(yè)務(wù)處理后會(huì)返回一個(gè)ActionMapping的對象,該對象包含了Action的請求對象,決定Web Container該返回個(gè)對象給用戶。</p><p> 4)ActionForm</p>&
43、lt;p> 當(dāng)ActionServlet接收到用戶的請求時(shí),會(huì)根據(jù)struts-config.xml描述將數(shù)據(jù)封裝到相應(yīng)的ActionForm中,然后由Action根據(jù)struts-config.xml的描述讀取相應(yīng)的ActionForm中的數(shù)據(jù),進(jìn)行處理,將處理后的結(jié)果返回給用戶。</p><p><b> 5)標(biāo)簽庫</b></p><p> Stru
44、ts提供了功能強(qiáng)大的標(biāo)簽庫,只有充分使用這些標(biāo)簽才能最大限度發(fā)揮Struts的作用,真正實(shí)現(xiàn)MVC模式。有了這些標(biāo)簽庫開發(fā)人員無需在JSP頁面添加任何的Java腳本就可以實(shí)現(xiàn)非常復(fù)雜的邏輯處理,從而實(shí)現(xiàn)了開發(fā)人員的美工人員的工作的分離。減少了美工人員的難度。</p><p> 2.2.2 Struts的工作過程</p><p><b> 圖2-2</b></
45、p><p> Struts的工作過程如圖2-2,當(dāng)用戶向Web Server發(fā)出請求時(shí),Web Server將請求轉(zhuǎn)交給ActionServlet,由Servlet決定調(diào)用哪些Action,然后根據(jù)Struts-config.xml的配置對應(yīng)相應(yīng)的Form來讀取數(shù)據(jù),并調(diào)用相應(yīng)的業(yè)務(wù)邏輯處理方法進(jìn)行處理,然后將處理后的結(jié)果傳遞到JSP提供給用戶。</p><p> 2.3 Struts的國
46、際化</p><p> 在過去,軟件開發(fā)者在開發(fā)應(yīng)用程序時(shí),將注意力集中于實(shí)現(xiàn)具體的業(yè)務(wù)邏輯。軟件面向的用戶群是固定的,軟件只需要支持一種語言,但是隨著跨國業(yè)務(wù)的迅猛發(fā)展,需要同一軟件能同時(shí)支持多種語言。對于一個(gè)已經(jīng)開發(fā)好的軟件如果要支持新的語言就要對軟件進(jìn)行國際化。</p><p> 國際化指的是在軟件設(shè)計(jì)階段就應(yīng)該使軟件具有支持多種語言和地區(qū)的功能。這樣,當(dāng)需要在應(yīng)用中添加對一種新
47、的語言和國家的支持時(shí),不需要對已有的軟件進(jìn)行重新編碼。</p><p> 一個(gè)應(yīng)用程序支持國際化應(yīng)該具備以下特征:</p><p> 1)當(dāng)應(yīng)用程序需要支持一種新的語言時(shí)無需修改源碼。</p><p> 2)應(yīng)用程序中的文本及圖片資源從代碼中分離出來,存儲(chǔ)在外部。</p><p> 3)根據(jù)用戶的語言和地理位置進(jìn)行正確的格式化。<
48、;/p><p> 4)可以方便快捷地對應(yīng)用做出調(diào)整,使它適應(yīng)新的語言和地區(qū)。</p><p> Struts對國際化的支持體現(xiàn)在能夠輸出和用戶Locale相符合的文本和圖片上。當(dāng)Struts配置文件的<controller>元素的Local屬性為True時(shí),Struts框架把用戶的Locale實(shí)例保存在Session范圍內(nèi),寧產(chǎn),Struts框架能自動(dòng)根據(jù)這一Locale實(shí)例來
49、從Resource Bundle中選擇合適的資源文件,當(dāng)用戶的Locale為英文時(shí),Struts框架就會(huì)向用戶返回來自于Application_en.properties文件的文本內(nèi)容,當(dāng)用戶的Locale為中文時(shí),Struts框架就會(huì)向用戶返回來自于Application_ch_properties文件的文本內(nèi)容。</p><p> 第三章 Hibernate框架介紹</p><p>
50、; Hibernate是一個(gè)開放源代碼的對象關(guān)系映射框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲地使用面向?qū)ο缶幊趟季S來操縱數(shù)據(jù)庫,Hibernate可以應(yīng)用在任何使用JDBC的場合,既可以在Java的客戶端程序中使用,也可以在Servlet/JSP的Web應(yīng)用中使用。</p><p> Hibernate的作用就是介于Java與JDBC之間的一個(gè)持久層,它通過建立與數(shù)據(jù)庫表之
51、間的映射來操縱數(shù)據(jù)庫,Hibernate是基于JDBC之上的。</p><p> 3.1 數(shù)據(jù)庫操作的3個(gè)階段</p><p> 1)JDBC操作階段</p><p> 在使用Java進(jìn)行數(shù)據(jù)庫開發(fā)的最初數(shù)據(jù)庫開發(fā)的最初階段,都是使用JDBC類來操作數(shù)據(jù)庫的:</p><p> String sql = “select * from
52、user where username=’”+username+”’ and password=’”+password+”’”;</p><p><b> Try{</b></p><p> Class.forName(“com.mysql.jdbc.Driver”).newInstance();</p><p> Connection
53、conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/SOG”,”root”,”root”);</p><p> Statement stmt = conn.createStatement();</p><p> ResultSet rs = stmt.executeQuery(sql);</p>
54、<p> While(rs.next()){</p><p> System.out.println(rs.getString(1));</p><p><b> }</b></p><p> }catch(Exception e){</p><p> e.printStackTrace();<
55、/p><p><b> }finally{</b></p><p> Rs.close();</p><p> Stmt.close();</p><p> Conn.close();</p><p><b> }</b></p><p> 這
56、一段操作代碼很具有代表性,幾乎所有的使用JDBC進(jìn)行數(shù)據(jù)庫操作的代碼都需要開發(fā)如下過程的代碼:</p><p> 定義查詢或更新的SQL語句;</p><p> 加載數(shù)據(jù)庫驅(qū)動(dòng)程序;</p><p><b> 創(chuàng)建數(shù)據(jù)庫連接;</b></p><p><b> 創(chuàng)建申明對象;</b><
57、/p><p><b> 執(zhí)行查詢或更新;</b></p><p> 關(guān)閉結(jié)果集對象,申明對象,數(shù)據(jù)連接對象。</p><p> 使用這種方法的缺點(diǎn)是:代碼重用度小,數(shù)據(jù)庫處理的代碼過多,不能突出業(yè)務(wù)處理邏輯。</p><p> 2)封裝JDBC的階段</p><p> 為了改進(jìn)JDBC操作的
58、不足,我們可以將JDBC的不同操作封裝成不同的函數(shù)。</p><p> Public Boolean createConn():加載驅(qū)動(dòng)程序,創(chuàng)建連接對象</p><p> Public Boolean update(String sql):執(zhí)行更新操作</p><p> Public void query(String sql):執(zhí)行查詢操作</p&g
59、t;<p> Public void closers():關(guān)閉結(jié)果集對象</p><p> Public void closeStm():關(guān)閉申明對象</p><p> Public void closeConn():關(guān)閉連接對象</p><p> 這樣我們就可以直接調(diào)用這些函數(shù)來創(chuàng)建數(shù)據(jù)連接,這樣就避免了以上不足,實(shí)現(xiàn)了對JDBC封裝,并能夠
60、對JDBC事務(wù)進(jìn)行管理。并且在這個(gè)基礎(chǔ)上,可以通過配置連接池來減少對數(shù)據(jù)庫操作的時(shí)間。</p><p><b> 3)ORM階段</b></p><p> 在對JDBC進(jìn)行封裝之后,能夠方便地實(shí)現(xiàn)數(shù)據(jù)庫的操作,但是,在面向?qū)ο蟮木幊涕_發(fā)中,數(shù)據(jù)庫的操作與普通的面向?qū)ο蟮腏ava代碼不同,而ORM則是減少了這種區(qū)別。真正實(shí)現(xiàn)了數(shù)據(jù)庫操作的對象化。</p>
61、<p> 3.2 ORM對象關(guān)系映射</p><p> ORM是Object Relational Mapping的簡稱,即對象關(guān)系映射,它是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的不匹配的技術(shù),ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將Java程序中的對象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中,實(shí)際上就是將Java中的Class與數(shù)據(jù)庫中的Table對應(yīng)起來。關(guān)系圖如圖3-1:</p>
62、<p><b> 圖3-1</b></p><p> 圖中依次包含了數(shù)據(jù)實(shí)體的3種不同表示形式,即數(shù)據(jù)實(shí)體,數(shù)據(jù)表,映射對象。</p><p> 用戶實(shí)體是數(shù)據(jù)庫概念設(shè)計(jì)階段的產(chǎn)物,表示在系統(tǒng)設(shè)計(jì)的最初階段所抽象的基本數(shù)據(jù)對象,每一個(gè)數(shù)據(jù)實(shí)體都包含一些信息段。</p><p> 將數(shù)據(jù)實(shí)體映射為數(shù)據(jù)表,信息映射為數(shù)據(jù)表的字段
63、,就形成了數(shù)據(jù)庫中的可表示的對象——數(shù)據(jù)表。數(shù)據(jù)表由表名和字段表示基本的信息。</p><p> 映射對象是普通的Java類,它用Java類來代表數(shù)據(jù)實(shí)體,類名與表名對應(yīng),屬性名與表的字段對應(yīng),ORM就是數(shù)據(jù)表與映射對象之間的映射關(guān)系。</p><p> 3.3 Hibernate介紹及工作過程</p><p> 3.3.1 Hibernate的組成</
64、p><p> Hibernate是一個(gè)實(shí)現(xiàn)了ORM映射的開發(fā)框架,主要實(shí)現(xiàn)數(shù)據(jù)庫表與Class的映射。主要組成部分有:對應(yīng)每個(gè)數(shù)據(jù)庫表有一個(gè)對應(yīng)的hbm.xml文件和持久化類以及對數(shù)據(jù)庫進(jìn)行操作的DAO類,Hibernate有一個(gè)Hibernate.cfg.xml文件,用來描述數(shù)據(jù)庫的連接信息以及關(guān)聯(lián)這些hbm.xml配置文件,在Hibernate中利用一個(gè)Factory輔助類來獲得與數(shù)據(jù)庫之間的會(huì)話和面向用戶的S
65、ervers層。</p><p> 1) Hibernate配置文件</p><p> Hibernate的數(shù)據(jù)庫連接信息是從配置文件中加載的,這要增加了Hibernate和數(shù)據(jù)庫連接信息的靈活性,在配置文件中包含了一系列屬性的配置,Hibernate將根據(jù)這些屬性來連接數(shù)據(jù)庫。</p><p> Hibernate的配置文件有兩種形式:一種是XML格式的文件
66、,一種是Properties屬性文件。</p><p> 2)映射文件.hbm.xml</p><p> Hibernate映射文件包含了對象/關(guān)系映射(O/R Mapping)所需的元數(shù)據(jù)。元數(shù)據(jù)包含持久化類的聲明和屬性到數(shù)據(jù)庫的映射(指向字段和其他實(shí)體的外鍵關(guān)聯(lián))。</p><p> 映射文件是XML格式的文件,它負(fù)責(zé)持久化類與數(shù)據(jù)庫表之間的映射。其根元素
67、是Hibernate-mapping,并通過屬性Package指定類所在的包。每一個(gè)表使用一個(gè)Class定義,Name表示類的名稱,Table表示關(guān)聯(lián)的表名,通過Property子元素來映射類的變量名與數(shù)據(jù)庫表字段名之間的映射。</p><p><b> 3)持久化類</b></p><p> 持久化類是指其實(shí)例需要被Hibernate持久化到數(shù)據(jù)庫中的類。持久化
68、類通常都是域模型中的實(shí)體或類,一般都是一張數(shù)據(jù)庫表對應(yīng)一個(gè)持久化類。但并不是所有的持久化類的實(shí)例都是持久化狀態(tài)。</p><p> Hibernate使用簡單的Java對象(Plain old java objects,就是POJOS)這種編程模型來進(jìn)行持久化,一個(gè)POJO很像一個(gè)JavaBean,通過Getter和Setter方法訪問其屬性,對外則隱藏了其內(nèi)部實(shí)現(xiàn)的細(xì)節(jié)。</p><p&g
69、t; 4)輔助類:HibernateSessionFactry</p><p> Hibernate的Session是一個(gè)持久化管理器,我們通過它來從數(shù)據(jù)庫中存取數(shù)據(jù),我們需要通過SessionFactory獲取一個(gè)Session:</p><p> SessionFactory sessionFactory = new Configuration().configure().bui
70、ldSessionFactory();</p><p> 通過對Configure()的調(diào)用來裝載Hibernate.cfg.xml配置文件,并初始化成一個(gè)Configuration實(shí)例,然后通過這個(gè)實(shí)例來獲得Session的一個(gè)生成器。通過Session我們就可以進(jìn)行和數(shù)據(jù)庫之間的會(huì)話。</p><p><b> 5)DAO類:</b></p>&
71、lt;p> DAO類存在于Project的DAO層,就是數(shù)據(jù)訪問接口,為了基于Hibernate的開發(fā)中,通常將業(yè)務(wù)層與數(shù)據(jù)層分開,DAO層只負(fù)責(zé)調(diào)用Hibernate API實(shí)現(xiàn)對數(shù)據(jù)庫的操作,Servers層面向用戶負(fù)責(zé)調(diào)用DAO層的代碼,這樣數(shù)據(jù)層的代碼不用關(guān)心業(yè)務(wù)服務(wù),可以更好的實(shí)現(xiàn)移植。</p><p> 6)Servers層:</p><p> Servers層即服
72、務(wù)層,就是面向用戶服務(wù),它定義的方法都是與實(shí)際的業(yè)務(wù)相關(guān)的,通過調(diào)用DAO層的方法來實(shí)現(xiàn)與數(shù)據(jù)庫的交互。</p><p> 3.3.2 Hibernate的工作過程</p><p> 當(dāng)需要與數(shù)據(jù)庫進(jìn)行的交互時(shí),用戶將需要處理的數(shù)據(jù)封裝到數(shù)據(jù)持久化類,但這是這個(gè)類并沒有被持久化,通過Hibernate的Transction接口開啟事務(wù)處理過程,將含有數(shù)據(jù)的類持久化,即與數(shù)據(jù)庫中的數(shù)據(jù)建
73、立映射關(guān)系,然后通過Transction的Commit方法將持久化類中的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行同步,然后關(guān)閉會(huì)話Session,此時(shí),實(shí)例化對象的狀態(tài)由持久轉(zhuǎn)變?yōu)槊摴埽琀ibernate的工作過程如圖3-2:</p><p><b> 圖3-2</b></p><p> 第四章 系統(tǒng)功能的實(shí)現(xiàn)及部署</p><p><b>
74、4.1 系統(tǒng)概述</b></p><p> 隨著信息網(wǎng)絡(luò)技術(shù)的應(yīng)用,目前許多政府部門、企事業(yè)單位已建立局域網(wǎng)絡(luò),并直接與internet相連接。為了充分發(fā)揮網(wǎng)絡(luò)的作用,提高辦公處理效率,建設(shè)自己的財(cái)務(wù)報(bào)銷系統(tǒng)系統(tǒng)是非常方便。本系統(tǒng)采用動(dòng)態(tài)WEB構(gòu)建技術(shù),使得系統(tǒng)客戶端無須維護(hù),適應(yīng)性強(qiáng),使用與企事業(yè)、政府機(jī)關(guān)等單位網(wǎng)絡(luò)環(huán)境使用。</p><p> 財(cái)務(wù)報(bào)銷系統(tǒng)是企業(yè)辦公自動(dòng)
75、化的一部分,企業(yè)內(nèi)部辦公網(wǎng)絡(luò)的內(nèi)容很多,如公司內(nèi)部公告信息的發(fā)布,文件的管理,員工內(nèi)部交流信息的發(fā)布和共享,個(gè)人日程及工作日志的安排,出勤登記。</p><p> 隨著信息技術(shù)的不斷發(fā)展以及互聯(lián)網(wǎng)技術(shù)的日益成熟,使遠(yuǎn)程辦公成為可能。你無論身處何地,只要有上網(wǎng)條件就可以利用網(wǎng)上辦公系統(tǒng),及時(shí)有效地對各種文件、單據(jù)進(jìn)行處理,同時(shí)也將徹底擺脫桌面上沉沉繁雜的紙張文件,使得繁重的工作變得輕松自如,極大地提高工作效率。&
76、lt;/p><p><b> 4.2 系統(tǒng)分析</b></p><p> 4.2.1 需求分析</p><p> 要求系統(tǒng)具有以下功能:</p><p><b> 用戶:</b></p><p><b> 提交記錄的管理</b></p>
77、<p><b> 已報(bào)銷記錄的管理</b></p><p><b> 未報(bào)銷記錄的管理</b></p><p><b> 申請中的記錄的管理</b></p><p><b> 管理員:</b></p><p><b> 對
78、用戶進(jìn)行管理</b></p><p> 對用戶提交的記錄進(jìn)行管理</p><p> 4.2.2 可行性分析</p><p> 通過財(cái)務(wù)報(bào)銷系統(tǒng)對企業(yè)日常財(cái)務(wù)報(bào)銷進(jìn)行管理,滿足了企業(yè)日常管理的需求,實(shí)現(xiàn)了企業(yè)員工和企業(yè)之間消息的發(fā)送與接收功能,大大的方便了企業(yè)內(nèi)部的溝通與企業(yè)的交流。</p><p><b> 4.
79、3 系統(tǒng)設(shè)計(jì)</b></p><p> 4.3.1 總體設(shè)計(jì)</p><p> 系統(tǒng)的工作流程如圖4-1:</p><p><b> 圖4-1</b></p><p> 4.3.2 詳細(xì)設(shè)計(jì)</p><p> 1. 注冊:新用戶要使用此系統(tǒng)必須進(jìn)行注冊,系統(tǒng)會(huì)檢查用戶選擇的用
80、戶名是否已經(jīng)被使用,若被使用則提示用戶更換用戶名。</p><p> 2. 登錄:用戶要進(jìn)入系統(tǒng)必須進(jìn)行登錄,系統(tǒng)檢查用戶名和密碼是否正確,若正確則成功進(jìn)入系統(tǒng),否則提示錯(cuò)誤信息。</p><p> 3. 提交管理:用戶登錄成功時(shí)系統(tǒng)同時(shí)會(huì)檢查此用戶所有的提交記錄。 </p><p> 4. 未報(bào)銷:系統(tǒng)將顯示當(dāng)前所有的未報(bào)銷的信息,用戶可以選擇信息進(jìn)行查看,
81、用戶也可以添加信息,并且可以刪除記錄信息。</p><p> 5. 申請中的:登錄用戶可以看到所有的管理員沒有報(bào)銷的信息,并可以有選擇的進(jìn)行查看,用戶可以添加會(huì)議信息,并且可以刪除,刪除時(shí)系統(tǒng)會(huì)檢查信息的發(fā)布者,若為當(dāng)前用戶則刪除成功,否則提示錯(cuò)誤信息,并不能夠刪除。</p><p> 6.管理員:用戶可以利用此系統(tǒng)進(jìn)行用戶管理,包括查看、用戶的提交記錄刪除用戶和對應(yīng)的提交記錄。<
82、;/p><p><b> 12.數(shù)據(jù)庫設(shè)計(jì):</b></p><p><b> 用戶表如圖4-1:</b></p><p><b> 圖4-1</b></p><p> mysql> desc user;</p><p> +--------
83、--+--------------+------+-----+---------+----------------+</p><p> | Field | Type | Null | Key | Default | Extra |</p><p> +----------+--------------+------+-----+---------
84、+----------------+</p><p> | id | int(10) | NO | PRI | NULL | auto_increment |</p><p> | username | varchar(50) | YES | | NULL | |</p><p>
85、 | password | varchar(50) | YES | | NULL | |</p><p> | sex | varchar(2) | NO | | NULL | |</p><p> | email | varchar(50) | YES |
86、| NULL | |</p><p> | icq | varchar(20) | YES | | NULL | |</p><p> | mobile | varchar(20) | YES | | NULL | |</p>
87、<p> | postcode | varchar(6) | YES | | NULL | |</p><p> | address | varchar(100) | YES | | NULL | |</p><p> +----------+--------------+--
88、----+-----+---------+----------------+</p><p> 9 rows in set (0.28 sec)</p><p> 管理員表如圖4-2:</p><p> mysql> desc admin;</p><p> +----------+-------------+------+--
89、---+---------+----------------+</p><p> | Field | Type | Null | Key | Default | Extra |</p><p> +----------+-------------+------+-----+---------+----------------+</p>
90、<p> | id | int(10) | NO | PRI | NULL | auto_increment |</p><p> | name | varchar(50) | YES | | NULL | |</p><p> | password | varchar(50) | YES
91、 | | NULL | |</p><p> +----------+-------------+------+-----+---------+----------------+</p><p> 3 rows in set (0.06 sec)</p><p><b> 圖4-2</b>&l
92、t;/p><p><b> Pay表</b></p><p> mysql> desc pay;</p><p> +---------+-------------+------+-----+---------+----------------+</p><p> | Field | Type
93、 | Null | Key | Default | Extra |</p><p> +---------+-------------+------+-----+---------+----------------+</p><p> | id | int(11) | NO | PRI | NULL | auto_increment |&l
94、t;/p><p> | userid | int(11) | YES | | NULL | |</p><p> | bumen | varchar(40) | YES | | NULL | |</p><p> | money | int(40)
95、 | NO | | NULL | |</p><p> | project | varchar(40) | YES | | NULL | |</p><p> | message | varchar(40) | YES | | NULL | |&l
96、t;/p><p> | addtime | varchar(40) | YES | | NULL | |</p><p> | feiyon | varchar(40) | YES | | NULL | |</p><p> | istonyi | varchar(1)
97、 | YES | | 0 | |</p><p> | isread | varchar(1) | YES | | 0 | |</p><p> +---------+-------------+------+-----+---------+----------------+&l
98、t;/p><p> 10 rows in set (0.09 sec)</p><p> 4.3.3 確定并搭建開發(fā)環(huán)境,并對開發(fā)環(huán)境進(jìn)行測試</p><p> 1. 開發(fā)語言:Java,Jsp</p><p> 2. 框架:Struts1.2,Hibernate3.0,SiteMesh</p><p> 3.
99、系統(tǒng)環(huán)境:Windows xp SP2,CPU1.73GHz,Memory:1G。</p><p> 4. 開發(fā)環(huán)境:MyEclipse6.0,Server:Apache的Tomcat6.0,JDK:JDK1.6,Database:Mysql5.0,</p><p> 5.安裝開發(fā)環(huán)境,并編寫一個(gè)test的模型對系統(tǒng)進(jìn)行測試。</p><p><b>
100、 4.3.4系統(tǒng)實(shí)現(xiàn)</b></p><p> 下面能過用戶功能的實(shí)現(xiàn)來說明Struts和Hibernate的整合過程,并以此來說明整個(gè)系統(tǒng)的實(shí)現(xiàn)過程。</p><p> 4.3.4.1 Hibernate的實(shí)現(xiàn)</p><p> 1.建立pay表的持久化類Pay.java,類中的屬性與pay表中的字段相對應(yīng),并為之添加相應(yīng)的Getter和Set
101、ter方法:</p><p> private int id;</p><p> private String bumen;</p><p> private String addtime;</p><p> private int userid;</p><p> private String feiyon
102、;</p><p> private int money;</p><p> private String project;</p><p> private String message;</p><p> private String isread;</p><p> private String ist
103、onyi;</p><p> public String getIsread() {</p><p> return isread;</p><p><b> }</b></p><p> public void setIsread(String isread) {</p><p> t
104、his.isread = isread;</p><p><b> }</b></p><p> public String getIstonyi() {</p><p> return istonyi;</p><p><b> }</b></p><p> pu
105、blic void setIstonyi(String istonyi) {</p><p> this.istonyi = istonyi;</p><p><b> }</b></p><p> public String getBumen() {</p><p> return bumen;</p&g
106、t;<p><b> }</b></p><p> public void setBumen(String bumen) {</p><p> this.bumen = bumen;</p><p><b> }</b></p><p> public String getA
107、ddtime() {</p><p> return addtime;</p><p><b> }</b></p><p> public void setAddtime(String addtime) {</p><p> this.addtime = addtime;</p><p>
108、;<b> }</b></p><p> public int getUserid() {</p><p> return userid;</p><p><b> }</b></p><p> public void setUserid(int userid) {</p>
109、<p> this.userid = userid;</p><p><b> }</b></p><p> public String getFeiyon() {</p><p> return feiyon;</p><p><b> }</b></p><
110、;p> public void setFeiyon(String feiyon) {</p><p> this.feiyon = feiyon;</p><p><b> }</b></p><p> public int getMoney() {</p><p> return money;</
111、p><p><b> }</b></p><p> public void setMoney(int money) {</p><p> this.money = money;</p><p><b> }</b></p><p> public String getP
112、roject() {</p><p> return project;</p><p><b> }</b></p><p> public void setProject(String project) {</p><p> this.project = project;</p><p>
113、;<b> }</b></p><p> public String getMessage() {</p><p> return message;</p><p><b> }</b></p><p> public void setMessage(String message) {&l
114、t;/p><p> this.message = message;</p><p><b> }</b></p><p> public int getId() {</p><p> return id;</p><p><b> }</b></p>&l
115、t;p> public void setId(int id) {</p><p> this.id = id;</p><p><b> }</b></p><p> 2. 建立與pay表與持久化類的描述文件Pay.hbm.xml:</p><p> <hibernate-mapping>&l
116、t;/p><p> <hibernate-mapping></p><p> <class name="po.Pay" table="pay"></p><p> <id name="id" type="java.lang.Integer"><
117、/p><p> <column name="id" /></p><p> <generator class="increment" /></p><p><b> </id></b></p><p> <property name=&
118、quot;userid" type="java.lang.Integer"></p><p> <column name="userid" length="11" /></p><p> </property></p><p> <property nam
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于struts+hibernate框架的在線答疑系統(tǒng)-畢業(yè)論文
- 基于Struts+Hibernate開發(fā)在線考試系統(tǒng).pdf
- struts+hibernate實(shí)現(xiàn)的網(wǎng)絡(luò)購物系統(tǒng)
- 基于bs架構(gòu)struts+hibernate的網(wǎng)上購物系統(tǒng)
- 計(jì)算機(jī)畢業(yè)論文范文畢業(yè)論文計(jì)算機(jī)專業(yè)
- 基于BS架構(gòu)Struts+Hibernate的網(wǎng)上購物系統(tǒng).doc
- 基于Struts+Hibernate的集中監(jiān)測系統(tǒng)研究.pdf
- 計(jì)算機(jī)專業(yè)畢業(yè)論文
- 畢業(yè)論文---計(jì)算機(jī)專業(yè)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文
- 基于struts+hibernate的采購管理系統(tǒng)的分析與實(shí)現(xiàn)
- 基于struts和hibernate的網(wǎng)上書店系統(tǒng)---畢業(yè)論文
- 基于Struts+Hibernate的權(quán)限管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 計(jì)算機(jī)專業(yè)畢業(yè)論文---考勤管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)酒店管理系統(tǒng)畢業(yè)論文
- 計(jì)算機(jī)專業(yè)畢業(yè)論文 考勤管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)酒店管理系統(tǒng)畢業(yè)論文
- 基于struts和hibernate的網(wǎng)上書店系統(tǒng)---畢業(yè)論文
- 計(jì)算機(jī)專業(yè)畢業(yè)論文--考勤管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文--考勤管理系統(tǒng)
評論
0/150
提交評論