網(wǎng)上報銷系統(tǒng)畢業(yè)設計論文_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  畢 業(yè) 設 計 說 明 書</p><p>  2009年5月20日</p><p> 課題名稱基于struts+Hibernate的財務報銷系統(tǒng)</p><p> 系/專 業(yè)信息工程系/軟件設計</p><p> 班 級軟件0613</p><p> 學 號</p>&

2、lt;p> 學生姓名</p><p><b>  目 錄</b></p><p><b>  摘要1</b></p><p>  Abstract2</p><p><b>  第一章 緒論4</b></p><p>  1.1OA概述

3、4</p><p>  1.2技術背景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&

4、gt;<p>  2.1.3 控制層6</p><p>  2.2 Struts框架的結(jié)構及實現(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>  

5、2.3 Struts的國際化9</p><p>  第三章  Hibernate框架介紹10</p><p>  3.1 數(shù)據(jù)庫操作的3個階段10</p><p>  3.2 ORM對象關系映射12</p><p>  3.3 Hibernate介紹及工作過程13</p><p>  3.3.1 Hibern

6、ate的組成13</p><p>  3.3.2 Hibernate的工作過程14</p><p>  第四章 系統(tǒng)功能的實現(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>

7、  4.2.2 可行性分析16</p><p>  4.3 系統(tǒng)設計16</p><p>  4.3.1 總體設計16</p><p>  4.3.2 詳細設計17</p><p>  4.3.3 確定并搭建開發(fā)環(huán)境,并對開發(fā)環(huán)境進行測試20</p><p>  4.3.4系統(tǒng)實現(xiàn)21</p>

8、<p>  4.3.5 系統(tǒng)的部署及運行30</p><p>  第五章 開發(fā)總結(jié)及前景31</p><p><b>  致謝31</b></p><p><b>  參考文獻32</b></p><p><b>  摘要</b></p>&l

9、t;p>  財務報銷系統(tǒng)是將財務報銷和計算機技術結(jié)合起來的一種新型的辦公方式,是信息化社會的產(chǎn)物。通過網(wǎng)絡,組織機構內(nèi)部的人員可跨越時間、空間進行操作。通過財務報銷系統(tǒng)所實施的交換式網(wǎng)絡應用,使信息的傳遞更加快捷和方便,從而極大地擴展了辦事效率。</p><p>  財務報銷系統(tǒng),是以網(wǎng)絡為依托,在企業(yè)內(nèi)部進行暢通的信息交流。在這種模式下,它所屬的財務、人事都成為企業(yè)信息流中的獨立的一個環(huán)節(jié),而不再為安全過

10、分擔憂。依靠這種模式,企業(yè)的組織結(jié)構能夠得到簡化,各個部門在信息共享的基礎上進行協(xié)作,藕合性大大減低,便于明確各個部門甚至每個員工的責任,而決策層可以迅速綜合來自各個方而的信息,并此為依據(jù)制定企業(yè)的戰(zhàn)略決策。沒有人懷疑計算機的出現(xiàn)給辦公室職員帶來的便利,但是對現(xiàn)代的企業(yè)人事煩雜,為了減輕員工的工作量,要將員工從繁瑣的事務性工作中解放出來,用更多的精力去關注最重要的事情,從而提高企業(yè)的效率,增強企業(yè)的綜合競爭能力。</p>

11、<p>  隨著計算機網(wǎng)絡技術的發(fā)展及企業(yè)管理模式的不斷變化,目前,以傳統(tǒng)人力為主的財務報銷系統(tǒng)已不能很好滿足企業(yè)辦公的需求,難以充公整合新技術的特點,進而無法充分發(fā)揮新管理模式的優(yōu)勢,并且要針對不同的人尋找不同的資料大大增加了工作的難度和煩索程度。本文從企業(yè)的實際情況出發(fā),在用戶需求分析的基礎上,提出企業(yè)財務報銷基本目標,并闡述系統(tǒng)結(jié)構設計和功能設計,設計了一種基于WEB的網(wǎng)絡財務報銷系統(tǒng),系統(tǒng)建立在Browser/Serv

12、r/Database三層構架之上,并且本系統(tǒng)采用MVC(Model,View,Controller)三層架構,并且本系統(tǒng)采用了可跨平臺的Java語言作為主要開發(fā)語言,并使用了基于MVC三層架構的Struts框架和實現(xiàn)了O/R(Object/Relation)的Hibernate框架等J2EE的主流框架,并對本系統(tǒng)進行了國際化,從而大大增加了系統(tǒng)的靈活性和可擴展性。并且本系統(tǒng)采用Mysql數(shù)據(jù)庫,從而降低了對運行環(huán)境配置的要求。</

13、p><p>  關鍵字:Hibernate,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 pu

14、t together with the calculator 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 o

15、f the information-based society.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>  N

16、ow say of transact automation, 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 t

17、he finance,personnel,administration,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 th

18、is kind of mode, the organization 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 conventiona

19、l Client/Server do not well 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

20、different Running- Environment 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><

21、;p><b>  第一章 緒論</b></p><p><b>  財務報銷系統(tǒng)概述</b></p><p>  在當今計算機網(wǎng)絡技術和計算機技術飛速發(fā)展,人們普遍使用計算機來提高個人工作效率,但是在需要許多人一起協(xié)同工作的現(xiàn)代工作環(huán)境中,我們更需要提高我們的整體工作效率。利用網(wǎng)絡通訊基礎及先進的網(wǎng)絡應用平臺,建設一個安全、可靠、開放、高效

22、的財務報銷系統(tǒng)。</p><p>  傳統(tǒng)財務報銷主要以紙介質(zhì)為主,在信息革命的浪潮中,顯然已經(jīng)遠遠不能滿足高效率、快節(jié)奏的現(xiàn)代工作和生活的需要。如何實現(xiàn)信息處理的自動化和辦公的無紙化逐步得到了人們的重視。</p><p>  網(wǎng)絡財務報銷系統(tǒng)效果并不明顯,人們還是儀在單機字處理和表格處理的所謂的初級階段,信息的交流和共享,以及團隊的協(xié)同工作無法很好的實現(xiàn),極大地限制了工作的效率,Inte

23、rnet/Intranet的迅猛發(fā)展,為信息的交流和共享,團隊的協(xié)同運作提供了技術的保證,同時也預示著網(wǎng)絡化辦公時代的來臨。</p><p><b>  技術背景</b></p><p>  隨著Internet技術的飛速發(fā)展,基于B/S結(jié)構的服務應用程序得到了廣泛的應用,實現(xiàn)Web應用的技術和框架也層出不窮,當今軟件開發(fā)出現(xiàn)了兩大應用技術標準:微軟的.NET和SUN

24、公司提出的J2EE,這兩種技術各有其優(yōu)缺點,J2EE的安全性及可移植性優(yōu)于.NET,但是J2EE的企業(yè)級應用需要專門的Container,及Server,需要花費大量的資金在軟件的運行和維護上。但是隨著J2EE技術的不斷成熟,并且大量開源框架的出現(xiàn),J2EE的優(yōu)勢日漸突出,且J2EE采用可跨平臺運行的Java語言作為其主要開發(fā)語言,能夠在不同的平臺上運行,因此越來越受到企業(yè)的歡迎。</p><p>  課題研究的

25、意義及可行性</p><p>  本文通過整合一些開源的J2EE框架來搭建一個開發(fā)平臺,結(jié)合Struts框架和Hibernate的數(shù)據(jù)持久化機制來構建一個輕量級的Web開發(fā)框架,并利用此框架來開發(fā)一個基于B/S的辦公自動化系統(tǒng),以此來說明Struts和Hibernate的整合過程。選擇這種開發(fā)框架的優(yōu)點有以下幾個:</p><p>  1.快速開發(fā)。Struts是一個成熟的Web層框架,稱

26、為A Half Done Application,開發(fā)者只需要在需要的地方加入自己的處理邏輯,并且許多參數(shù)的設置是在配置文件中,需要修改時開發(fā)者只需要修改配置文件即可,而不需要去修改代碼的每個地方,這種開發(fā)框架已經(jīng)廣泛應用在許多行業(yè)的系統(tǒng)中,如交通,電力,銀行,通信等。</p><p>  2.Hibernate的數(shù)據(jù)持久化。Hibernate是一個基于O-R(Object-Relation)的框架,真正的適用于

27、面向?qū)ο蟮拈_發(fā)思想。開發(fā)著只需要對對應的Class進行操作就可以方便的實現(xiàn)對數(shù)據(jù)庫的操作。并且Hibernate框架中實現(xiàn)了許多對數(shù)據(jù)庫中數(shù)據(jù)的操作方法,方便了Developer的開發(fā)。相對于使用JDBC開發(fā)更方便,快捷。</p><p>  3.成本低。Struts,Hibernate,以及所使用的開發(fā)環(huán)境及運行環(huán)境采用的都是開源軟件,大降低了開發(fā)和運行的成本,更適合中小企業(yè)的開發(fā)。</p>&l

28、t;p>  3可擴展性。Struts和Hibernate的使用降低的項目各個模塊之間的耦合度,因此企業(yè)很容易對項目的某個模塊進行擴展或者進行二次開發(fā)。由于此框架容易與其他的J2EE框架整合,更是大大提高了系統(tǒng)的可擴展性。</p><p><b>  Struts介紹</b></p><p>  Struts是一種實現(xiàn)了MVC模式的框架,全部的請求都由一個被稱為A

29、ctionServlet的Servlet來接收并控制。Struts并沒有取代Jsp,Servlet,只是將其組織起來。</p><p>  2.1 MVC模式簡介</p><p>  MVC是一種設計模式,是Model-View-Controller的簡寫,它把整個應用系統(tǒng)的輸入、處理、輸出分開,其結(jié)構圖如圖2-1:</p><p><b>  圖2-1&

30、lt;/b></p><p><b>  2.1.1 模型</b></p><p>  模型是應用程序的核心,負責處理用戶的數(shù)據(jù)和實現(xiàn)業(yè)務邏輯的處理,并且為視圖提供數(shù)據(jù),用戶所有的數(shù)據(jù)操作和業(yè)務邏輯的處理全部都由模型層處理。</p><p><b>  2.1.2 視圖</b></p><p>

31、;  視圖是一些JSP頁面,是系統(tǒng)與用戶交互的界面,即常稱的UI(User interface),視圖用戶來接收用戶的輸入,在MVC模式中,視圖層不包括任何業(yè)務邏輯的處理,它只是為Model提供數(shù)據(jù)及為用戶顯示Model層更新的數(shù)據(jù)。</p><p><b>  2.1.3 控制層</b></p><p>  控制層也稱為控制器,當用戶提交請求時,控制器接收用戶的請求

32、并根據(jù)用戶提交的數(shù)據(jù)決定調(diào)用哪些模型來進行業(yè)務處理,同時將用戶提交的數(shù)據(jù)提供給Model層,由Model來進行數(shù)據(jù)處理,然后將處理的結(jié)果給視圖的形式返回給用戶,從而實現(xiàn)用戶和系統(tǒng)的交互。</p><p>  2.2 Struts框架的結(jié)構及實現(xiàn)方法</p><p>  Struts是Apache軟件組織提供的一個開源項目,為Java Web應用提供MVC框架,適用于開發(fā)大型可擴展的Web應

33、用。在MVC剛剛出現(xiàn)的時候,開發(fā)人員需要花大量的時間在MVC模式的實現(xiàn)上,而Struts則恰恰實現(xiàn)了這種開發(fā)模式,開發(fā)人員只需在此基礎去實現(xiàn)自己的邏輯處理,而不?;ㄙM大量的時間在模式的實現(xiàn)上。</p><p>  2.2.1Struts框架的組成</p><p>  Struts對應MVC的三層分別有對應的實現(xiàn)方法:Struts中的Java Bean以及大型項目中的EJB對應MVC中的Mo

34、del層,MVC的Controller層對應Struts的Action及ActionServlet,Struts的ActionForm以及JSP頁面對應MVC的視圖層,在視圖層Struts提供了大量的標簽庫用來顯示數(shù)據(jù),Struts的各個組成部分全部由Struts的主配置文件Struts-config.xml聯(lián)系在一起。</p><p>  2.2.1 Struts的基本組件</p><p&g

35、t;  Struts主要由四個核心組件組成:ActionServlet,Action,F(xiàn)ormBean,ActionMapping,另外Struts還提供了功能強大的標簽庫(Taglib),用來供客戶端顯示用。</p><p>  1)ActionServlet</p><p>  ActionServlet是Javax.servlet.http.HttpServlet的子類,是Strut

36、s框架的主控制器,根據(jù)用戶的請求和配置文件和描述將請求轉(zhuǎn)發(fā)給相應的Action,Servlet必須在Http Application的Web.xml的配置文件中聲明,因此在Struts中同樣也在Web.xml中對ActionServlet進行了配置:</p><p><b>  <servlet></b></p><p>  <servlet-nam

37、e>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class></p><p>  <init-param></p><p>  <param-name>config</param-name

38、></p><p>  <param-value>/WEB-INF/struts-config.xml</param-value></p><p>  </init-param></p><p>  <init-param></p><p>  <param-name>debu

39、g</param-name></p><p>  <param-value>3</param-value></p><p>  </init-param></p><p>  <init-param></p><p>  <param-name>detail</pa

40、ram-name></p><p>  <param-value>3</param-value></p><p>  </init-param></p><p>  <load-on-startup>0</load-on-startup></p><p>  </serv

41、let></p><p>  <servlet-mapping></p><p>  <servlet-name>action</servlet-name></p><p>  <url-pattern>*.do</url-pattern></p><p>  </ser

42、vlet-mapping></p><p>  ActionServlet會匹配所有的以.do結(jié)尾的請求,并讀取配置文件里配置的Config對應的Struts的配置文件中的Action,從而將請求轉(zhuǎn)交給對應的Action調(diào)用相應的業(yè)務處理方法進行處理。</p><p><b>  2)Action</b></p><p>  當Actio

43、nServlet得到用戶的請求后,將請求轉(zhuǎn)發(fā)給Action,然后由Action調(diào)用相應的業(yè)務邏輯處理方法進行處理。</p><p>  3)ActionMapping</p><p>  當Action進行業(yè)務處理后會返回一個ActionMapping的對象,該對象包含了Action的請求對象,決定Web Container該返回個對象給用戶。</p><p>  

44、4)ActionForm</p><p>  當ActionServlet接收到用戶的請求時,會根據(jù)struts-config.xml描述將數(shù)據(jù)封裝到相應的ActionForm中,然后由Action根據(jù)struts-config.xml的描述讀取相應的ActionForm中的數(shù)據(jù),進行處理,將處理后的結(jié)果返回給用戶。</p><p><b>  5)標簽庫</b>&l

45、t;/p><p>  Struts提供了功能強大的標簽庫,只有充分使用這些標簽才能最大限度發(fā)揮Struts的作用,真正實現(xiàn)MVC模式。有了這些標簽庫開發(fā)人員無需在JSP頁面添加任何的Java腳本就可以實現(xiàn)非常復雜的邏輯處理,從而實現(xiàn)了開發(fā)人員的美工人員的工作的分離。減少了美工人員的難度。</p><p>  2.2.2 Struts的工作過程</p><p><b

46、>  圖2-2</b></p><p>  Struts的工作過程如圖2-2,當用戶向Web Server發(fā)出請求時,Web Server將請求轉(zhuǎn)交給ActionServlet,由Servlet決定調(diào)用哪些Action,然后根據(jù)Struts-config.xml的配置對應相應的Form來讀取數(shù)據(jù),并調(diào)用相應的業(yè)務邏輯處理方法進行處理,然后將處理后的結(jié)果傳遞到JSP提供給用戶。</p>

47、<p>  2.3 Struts的國際化</p><p>  在過去,軟件開發(fā)者在開發(fā)應用程序時,將注意力集中于實現(xiàn)具體的業(yè)務邏輯。軟件面向的用戶群是固定的,軟件只需要支持一種語言,但是隨著跨國業(yè)務的迅猛發(fā)展,需要同一軟件能同時支持多種語言。對于一個已經(jīng)開發(fā)好的軟件如果要支持新的語言就要對軟件進行國際化。</p><p>  國際化指的是在軟件設計階段就應該使軟件具有支持多種

48、語言和地區(qū)的功能。這樣,當需要在應用中添加對一種新的語言和國家的支持時,不需要對已有的軟件進行重新編碼。</p><p>  一個應用程序支持國際化應該具備以下特征:</p><p>  1)當應用程序需要支持一種新的語言時無需修改源碼。</p><p>  2)應用程序中的文本及圖片資源從代碼中分離出來,存儲在外部。</p><p>  3

49、)根據(jù)用戶的語言和地理位置進行正確的格式化。</p><p>  4)可以方便快捷地對應用做出調(diào)整,使它適應新的語言和地區(qū)。</p><p>  Struts對國際化的支持體現(xiàn)在能夠輸出和用戶Locale相符合的文本和圖片上。當Struts配置文件的<controller>元素的Local屬性為True時,Struts框架把用戶的Locale實例保存在Session范圍內(nèi),寧產(chǎn)

50、,Struts框架能自動根據(jù)這一Locale實例來從Resource Bundle中選擇合適的資源文件,當用戶的Locale為英文時,Struts框架就會向用戶返回來自于Application_en.properties文件的文本內(nèi)容,當用戶的Locale為中文時,Struts框架就會向用戶返回來自于Application_ch_properties文件的文本內(nèi)容。</p><p>  第三章  Hibernat

51、e框架介紹</p><p>  Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲地使用面向?qū)ο缶幊趟季S來操縱數(shù)據(jù)庫,Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序中使用,也可以在Servlet/JSP的Web應用中使用。</p><p>  Hibernate的作用就是介于Java

52、與JDBC之間的一個持久層,它通過建立與數(shù)據(jù)庫表之間的映射來操縱數(shù)據(jù)庫,Hibernate是基于JDBC之上的。</p><p>  3.1 數(shù)據(jù)庫操作的3個階段</p><p>  1)JDBC操作階段</p><p>  在使用Java進行數(shù)據(jù)庫開發(fā)的最初數(shù)據(jù)庫開發(fā)的最初階段,都是使用JDBC類來操作數(shù)據(jù)庫的:</p><p>  Str

53、ing sql = “select * from user where username=’”+username+”’ and password=’”+password+”’”;</p><p><b>  Try{</b></p><p>  Class.forName(“com.mysql.jdbc.Driver”).newInstance();</p>

54、;<p>  Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/SOG”,”root”,”root”);</p><p>  Statement stmt = conn.createStatement();</p><p>  ResultSet rs = stmt.execu

55、teQuery(sql);</p><p>  While(rs.next()){</p><p>  System.out.println(rs.getString(1));</p><p><b>  }</b></p><p>  }catch(Exception e){</p><p> 

56、 e.printStackTrace();</p><p><b>  }finally{</b></p><p>  Rs.close();</p><p>  Stmt.close();</p><p>  Conn.close();</p><p><b>  }</b>

57、;</p><p>  這一段操作代碼很具有代表性,幾乎所有的使用JDBC進行數(shù)據(jù)庫操作的代碼都需要開發(fā)如下過程的代碼:</p><p>  定義查詢或更新的SQL語句;</p><p>  加載數(shù)據(jù)庫驅(qū)動程序;</p><p><b>  創(chuàng)建數(shù)據(jù)庫連接;</b></p><p><b&g

58、t;  創(chuàng)建申明對象;</b></p><p><b>  執(zhí)行查詢或更新;</b></p><p>  關閉結(jié)果集對象,申明對象,數(shù)據(jù)連接對象。</p><p>  使用這種方法的缺點是:代碼重用度小,數(shù)據(jù)庫處理的代碼過多,不能突出業(yè)務處理邏輯。</p><p>  2)封裝JDBC的階段</p>

59、;<p>  為了改進JDBC操作的不足,我們可以將JDBC的不同操作封裝成不同的函數(shù)。</p><p>  Public Boolean createConn():加載驅(qū)動程序,創(chuàng)建連接對象</p><p>  Public Boolean update(String sql):執(zhí)行更新操作</p><p>  Public void query(S

60、tring sql):執(zhí)行查詢操作</p><p>  Public void closers():關閉結(jié)果集對象</p><p>  Public void closeStm():關閉申明對象</p><p>  Public void closeConn():關閉連接對象</p><p>  這樣我們就可以直接調(diào)用這些函數(shù)來創(chuàng)建數(shù)據(jù)連接,

61、這樣就避免了以上不足,實現(xiàn)了對JDBC封裝,并能夠?qū)DBC事務進行管理。并且在這個基礎上,可以通過配置連接池來減少對數(shù)據(jù)庫操作的時間。</p><p><b>  3)ORM階段</b></p><p>  在對JDBC進行封裝之后,能夠方便地實現(xiàn)數(shù)據(jù)庫的操作,但是,在面向?qū)ο蟮木幊涕_發(fā)中,數(shù)據(jù)庫的操作與普通的面向?qū)ο蟮腏ava代碼不同,而ORM則是減少了這種區(qū)別。

62、真正實現(xiàn)了數(shù)據(jù)庫操作的對象化。</p><p>  3.2 ORM對象關系映射</p><p>  ORM是Object Relational Mapping的簡稱,即對象關系映射,它是一種為了解決面向?qū)ο笈c關系數(shù)據(jù)庫存在的不匹配的技術,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將Java程序中的對象自動持久化到關系數(shù)據(jù)庫中,實際上就是將Java中的Class與數(shù)據(jù)庫中的Table

63、對應起來。關系圖如圖3-1:</p><p><b>  圖3-1</b></p><p>  圖中依次包含了數(shù)據(jù)實體的3種不同表示形式,即數(shù)據(jù)實體,數(shù)據(jù)表,映射對象。</p><p>  用戶實體是數(shù)據(jù)庫概念設計階段的產(chǎn)物,表示在系統(tǒng)設計的最初階段所抽象的基本數(shù)據(jù)對象,每一個數(shù)據(jù)實體都包含一些信息段。</p><p>

64、  將數(shù)據(jù)實體映射為數(shù)據(jù)表,信息映射為數(shù)據(jù)表的字段,就形成了數(shù)據(jù)庫中的可表示的對象——數(shù)據(jù)表。數(shù)據(jù)表由表名和字段表示基本的信息。</p><p>  映射對象是普通的Java類,它用Java類來代表數(shù)據(jù)實體,類名與表名對應,屬性名與表的字段對應,ORM就是數(shù)據(jù)表與映射對象之間的映射關系。</p><p>  3.3 Hibernate介紹及工作過程</p><p>

65、  3.3.1 Hibernate的組成</p><p>  Hibernate是一個實現(xiàn)了ORM映射的開發(fā)框架,主要實現(xiàn)數(shù)據(jù)庫表與Class的映射。主要組成部分有:對應每個數(shù)據(jù)庫表有一個對應的hbm.xml文件和持久化類以及對數(shù)據(jù)庫進行操作的DAO類,Hibernate有一個Hibernate.cfg.xml文件,用來描述數(shù)據(jù)庫的連接信息以及關聯(lián)這些hbm.xml配置文件,在Hibernate中利用一個Fact

66、ory輔助類來獲得與數(shù)據(jù)庫之間的會話和面向用戶的Servers層。</p><p>  1) Hibernate配置文件</p><p>  Hibernate的數(shù)據(jù)庫連接信息是從配置文件中加載的,這要增加了Hibernate和數(shù)據(jù)庫連接信息的靈活性,在配置文件中包含了一系列屬性的配置,Hibernate將根據(jù)這些屬性來連接數(shù)據(jù)庫。</p><p>  Hibern

67、ate的配置文件有兩種形式:一種是XML格式的文件,一種是Properties屬性文件。</p><p>  2)映射文件.hbm.xml</p><p>  Hibernate映射文件包含了對象/關系映射(O/R Mapping)所需的元數(shù)據(jù)。元數(shù)據(jù)包含持久化類的聲明和屬性到數(shù)據(jù)庫的映射(指向字段和其他實體的外鍵關聯(lián))。</p><p>  映射文件是XML格式的

68、文件,它負責持久化類與數(shù)據(jù)庫表之間的映射。其根元素是Hibernate-mapping,并通過屬性Package指定類所在的包。每一個表使用一個Class定義,Name表示類的名稱,Table表示關聯(lián)的表名,通過Property子元素來映射類的變量名與數(shù)據(jù)庫表字段名之間的映射。</p><p><b>  3)持久化類</b></p><p>  持久化類是指其實例需

69、要被Hibernate持久化到數(shù)據(jù)庫中的類。持久化類通常都是域模型中的實體或類,一般都是一張數(shù)據(jù)庫表對應一個持久化類。但并不是所有的持久化類的實例都是持久化狀態(tài)。</p><p>  Hibernate使用簡單的Java對象(Plain old java objects,就是POJOS)這種編程模型來進行持久化,一個POJO很像一個JavaBean,通過Getter和Setter方法訪問其屬性,對外則隱藏了其內(nèi)部

70、實現(xiàn)的細節(jié)。</p><p>  4)輔助類:HibernateSessionFactry</p><p>  Hibernate的Session是一個持久化管理器,我們通過它來從數(shù)據(jù)庫中存取數(shù)據(jù),我們需要通過SessionFactory獲取一個Session:</p><p>  SessionFactory sessionFactory = new Config

71、uration().configure().buildSessionFactory();</p><p>  通過對Configure()的調(diào)用來裝載Hibernate.cfg.xml配置文件,并初始化成一個Configuration實例,然后通過這個實例來獲得Session的一個生成器。通過Session我們就可以進行和數(shù)據(jù)庫之間的會話。</p><p><b>  5)DAO

72、類:</b></p><p>  DAO類存在于Project的DAO層,就是數(shù)據(jù)訪問接口,為了基于Hibernate的開發(fā)中,通常將業(yè)務層與數(shù)據(jù)層分開,DAO層只負責調(diào)用Hibernate API實現(xiàn)對數(shù)據(jù)庫的操作,Servers層面向用戶負責調(diào)用DAO層的代碼,這樣數(shù)據(jù)層的代碼不用關心業(yè)務服務,可以更好的實現(xiàn)移植。</p><p>  6)Servers層:</p&g

73、t;<p>  Servers層即服務層,就是面向用戶服務,它定義的方法都是與實際的業(yè)務相關的,通過調(diào)用DAO層的方法來實現(xiàn)與數(shù)據(jù)庫的交互。</p><p>  3.3.2 Hibernate的工作過程</p><p>  當需要與數(shù)據(jù)庫進行的交互時,用戶將需要處理的數(shù)據(jù)封裝到數(shù)據(jù)持久化類,但這是這個類并沒有被持久化,通過Hibernate的Transction接口開啟事務處

74、理過程,將含有數(shù)據(jù)的類持久化,即與數(shù)據(jù)庫中的數(shù)據(jù)建立映射關系,然后通過Transction的Commit方法將持久化類中的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)進行同步,然后關閉會話Session,此時,實例化對象的狀態(tài)由持久轉(zhuǎn)變?yōu)槊摴?,Hibernate的工作過程如圖3-2:</p><p><b>  圖3-2</b></p><p>  第四章 系統(tǒng)功能的實現(xiàn)及部署</p&

75、gt;<p><b>  4.1 系統(tǒng)概述</b></p><p>  隨著信息網(wǎng)絡技術的應用,目前許多政府部門、企事業(yè)單位已建立局域網(wǎng)絡,并直接與internet相連接。為了充分發(fā)揮網(wǎng)絡的作用,提高辦公處理效率,建設自己的財務報銷系統(tǒng)系統(tǒng)是非常方便。本系統(tǒng)采用動態(tài)WEB構建技術,使得系統(tǒng)客戶端無須維護,適應性強,使用與企事業(yè)、政府機關等單位網(wǎng)絡環(huán)境使用。</p>

76、<p>  財務報銷系統(tǒng)是企業(yè)辦公自動化的一部分,企業(yè)內(nèi)部辦公網(wǎng)絡的內(nèi)容很多,如公司內(nèi)部公告信息的發(fā)布,文件的管理,員工內(nèi)部交流信息的發(fā)布和共享,個人日程及工作日志的安排,出勤登記。</p><p>  隨著信息技術的不斷發(fā)展以及互聯(lián)網(wǎng)技術的日益成熟,使遠程辦公成為可能。你無論身處何地,只要有上網(wǎng)條件就可以利用網(wǎng)上辦公系統(tǒng),及時有效地對各種文件、單據(jù)進行處理,同時也將徹底擺脫桌面上沉沉繁雜的紙張文件,

77、使得繁重的工作變得輕松自如,極大地提高工作效率。</p><p><b>  4.2 系統(tǒng)分析</b></p><p>  4.2.1 需求分析</p><p>  要求系統(tǒng)具有以下功能:</p><p><b>  用戶:</b></p><p><b>  提交

78、記錄的管理</b></p><p><b>  已報銷記錄的管理</b></p><p><b>  未報銷記錄的管理</b></p><p><b>  申請中的記錄的管理</b></p><p><b>  管理員:</b></p&g

79、t;<p><b>  對用戶進行管理</b></p><p>  對用戶提交的記錄進行管理</p><p>  4.2.2 可行性分析</p><p>  通過財務報銷系統(tǒng)對企業(yè)日常財務報銷進行管理,滿足了企業(yè)日常管理的需求,實現(xiàn)了企業(yè)員工和企業(yè)之間消息的發(fā)送與接收功能,大大的方便了企業(yè)內(nèi)部的溝通與企業(yè)的交流。</p>

80、;<p><b>  4.3 系統(tǒng)設計</b></p><p>  4.3.1 總體設計</p><p>  系統(tǒng)的工作流程如圖4-1:</p><p><b>  圖4-1</b></p><p>  4.3.2 詳細設計</p><p>  1. 注冊:新用

81、戶要使用此系統(tǒng)必須進行注冊,系統(tǒng)會檢查用戶選擇的用戶名是否已經(jīng)被使用,若被使用則提示用戶更換用戶名。</p><p>  2. 登錄:用戶要進入系統(tǒng)必須進行登錄,系統(tǒng)檢查用戶名和密碼是否正確,若正確則成功進入系統(tǒng),否則提示錯誤信息。</p><p>  3. 提交管理:用戶登錄成功時系統(tǒng)同時會檢查此用戶所有的提交記錄。 </p><p>  4. 未報銷:系統(tǒng)將顯示

82、當前所有的未報銷的信息,用戶可以選擇信息進行查看,用戶也可以添加信息,并且可以刪除記錄信息。</p><p>  5. 申請中的:登錄用戶可以看到所有的管理員沒有報銷的信息,并可以有選擇的進行查看,用戶可以添加會議信息,并且可以刪除,刪除時系統(tǒng)會檢查信息的發(fā)布者,若為當前用戶則刪除成功,否則提示錯誤信息,并不能夠刪除。</p><p>  6.管理員:用戶可以利用此系統(tǒng)進行用戶管理,包括查

83、看、用戶的提交記錄刪除用戶和對應的提交記錄。</p><p><b>  12.數(shù)據(jù)庫設計:</b></p><p><b>  用戶表如圖4-1:</b></p><p><b>  圖4-1</b></p><p>  mysql> desc user;</p&

84、gt;<p>  +----------+--------------+------+-----+---------+----------------+</p><p>  | Field | Type | Null | Key | Default | Extra |</p><p>  +----------+------------

85、--+------+-----+---------+----------------+</p><p>  | id | int(10) | NO | PRI | NULL | auto_increment |</p><p>  | username | varchar(50) | YES | | NULL |

86、 |</p><p>  | password | varchar(50) | YES | | NULL | |</p><p>  | sex | varchar(2) | NO | | NULL | |</p><p>  | email | v

87、archar(50) | YES | | NULL | |</p><p>  | icq | varchar(20) | YES | | NULL | |</p><p>  | mobile | varchar(20) | YES | | NULL |

88、 |</p><p>  | postcode | varchar(6) | YES | | NULL | |</p><p>  | address | varchar(100) | YES | | NULL | |</p><p>  +---

89、-------+--------------+------+-----+---------+----------------+</p><p>  9 rows in set (0.28 sec)</p><p>  管理員表如圖4-2:</p><p>  mysql> desc admin;</p><p>  +---------

90、-+-------------+------+-----+---------+----------------+</p><p>  | Field | Type | Null | Key | Default | Extra |</p><p>  +----------+-------------+------+-----+---------+---

91、-------------+</p><p>  | id | int(10) | NO | PRI | NULL | auto_increment |</p><p>  | name | varchar(50) | YES | | NULL | |</p><p>  | pas

92、sword | varchar(50) | YES | | NULL | |</p><p>  +----------+-------------+------+-----+---------+----------------+</p><p>  3 rows in set (0.06 sec)</p><p>&l

93、t;b>  圖4-2</b></p><p><b>  Pay表</b></p><p>  mysql> desc pay;</p><p>  +---------+-------------+------+-----+---------+----------------+</p><p>

94、  | Field | Type | Null | Key | Default | Extra |</p><p>  +---------+-------------+------+-----+---------+----------------+</p><p>  | id | int(11) | NO | PRI | NUL

95、L | auto_increment |</p><p>  | userid | int(11) | YES | | NULL | |</p><p>  | bumen | varchar(40) | YES | | NULL | |</p><p>

96、  | money | int(40) | NO | | NULL | |</p><p>  | project | varchar(40) | YES | | NULL | |</p><p>  | message | varchar(40) | YES | | NUL

97、L | |</p><p>  | addtime | varchar(40) | YES | | NULL | |</p><p>  | feiyon | varchar(40) | YES | | NULL | |</p><p>

98、  | istonyi | varchar(1) | YES | | 0 | |</p><p>  | isread | varchar(1) | YES | | 0 | |</p><p>  +---------+-------------+------+-----+----

99、-----+----------------+</p><p>  10 rows in set (0.09 sec)</p><p>  4.3.3 確定并搭建開發(fā)環(huán)境,并對開發(fā)環(huán)境進行測試</p><p>  1. 開發(fā)語言:Java,Jsp</p><p>  2. 框架:Struts1.2,Hibernate3.0,SiteMesh&

100、lt;/p><p>  3. 系統(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)境,并編寫一個test的模型對系統(tǒng)進行測試。</

101、p><p><b>  4.3.4系統(tǒng)實現(xiàn)</b></p><p>  下面能過用戶功能的實現(xiàn)來說明Struts和Hibernate的整合過程,并以此來說明整個系統(tǒng)的實現(xiàn)過程。</p><p>  4.3.4.1 Hibernate的實現(xiàn)</p><p>  1.建立pay表的持久化類Pay.java,類中的屬性與pay表中

102、的字段相對應,并為之添加相應的Getter和Setter方法:</p><p>  private int id;</p><p>  private String bumen;</p><p>  private String addtime;</p><p>  private int userid;</p><p&g

103、t;  private String feiyon;</p><p>  private int money;</p><p>  private String project;</p><p>  private String message;</p><p>  private String isread;</p><

104、p>  private String istonyi;</p><p>  public String getIsread() {</p><p>  return isread;</p><p><b>  }</b></p><p>  public void setIsread(String isread)

105、{</p><p>  this.isread = isread;</p><p><b>  }</b></p><p>  public String getIstonyi() {</p><p>  return istonyi;</p><p><b>  }</b>

106、</p><p>  public void setIstonyi(String istonyi) {</p><p>  this.istonyi = istonyi;</p><p><b>  }</b></p><p>  public String getBumen() {</p><p&g

107、t;  return bumen;</p><p><b>  }</b></p><p>  public void setBumen(String bumen) {</p><p>  this.bumen = bumen;</p><p><b>  }</b></p><

108、p>  public String getAddtime() {</p><p>  return addtime;</p><p><b>  }</b></p><p>  public void setAddtime(String addtime) {</p><p>  this.addtime = add

109、time;</p><p><b>  }</b></p><p>  public int getUserid() {</p><p>  return userid;</p><p><b>  }</b></p><p>  public void setUserid(

110、int userid) {</p><p>  this.userid = userid;</p><p><b>  }</b></p><p>  public String getFeiyon() {</p><p>  return feiyon;</p><p><b>  }

111、</b></p><p>  public void setFeiyon(String feiyon) {</p><p>  this.feiyon = feiyon;</p><p><b>  }</b></p><p>  public int getMoney() {</p><

112、p>  return money;</p><p><b>  }</b></p><p>  public void setMoney(int money) {</p><p>  this.money = money;</p><p><b>  }</b></p><

113、p>  public String getProject() {</p><p>  return project;</p><p><b>  }</b></p><p>  public void setProject(String project) {</p><p>  this.project = pro

114、ject;</p><p><b>  }</b></p><p>  public String getMessage() {</p><p>  return message;</p><p><b>  }</b></p><p>  public void setMe

115、ssage(String message) {</p><p>  this.message = message;</p><p><b>  }</b></p><p>  public int getId() {</p><p>  return id;</p><p><b>  

116、}</b></p><p>  public void setId(int id) {</p><p>  this.id = id;</p><p><b>  }</b></p><p>  2. 建立與pay表與持久化類的描述文件Pay.hbm.xml:</p><p>  &l

117、t;hibernate-mapping></p><p>  <hibernate-mapping></p><p>  <class name="po.Pay" table="pay"></p><p>  <id name="id" type="java.l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論