這篇文章主要為大家展示了“如何使用Hibernate+Struts實(shí)現(xiàn)J2EE應(yīng)用開(kāi)發(fā)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何使用Hibernate+Struts實(shí)現(xiàn)J2EE應(yīng)用開(kāi)發(fā)”這篇文章吧。
創(chuàng)新互聯(lián)建站是專業(yè)的奎文網(wǎng)站建設(shè)公司,奎文接單;提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行奎文網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
數(shù)據(jù)持久層及Hibernate
Hibernate是一個(gè)數(shù)據(jù)持久層框架,是一種實(shí)現(xiàn)對(duì)象和關(guān)系之間映射(O/R Mapping)的工具,它對(duì)JDBC進(jìn)行了輕量級(jí)的對(duì)象封裝,使程序員可以使用對(duì)象編程思想來(lái)操作數(shù)據(jù)庫(kù)。它不僅提供了從Java類到數(shù)據(jù)表的映射,也提供了數(shù)據(jù)查詢和恢復(fù)機(jī)制。相對(duì)于使用JDBC和SQL來(lái)操作數(shù)據(jù)庫(kù),使用Hibernate能大大的提高實(shí)現(xiàn)的效率。Hibernate框架用配置文件的形式來(lái)定義Java對(duì)象和數(shù)據(jù)表之間的映射關(guān)系,同時(shí)在更深的層面將數(shù)據(jù)表之間的關(guān)系解釋為Java對(duì)象之間的繼承及包含等關(guān)系。通過(guò)使用HQL語(yǔ)句將復(fù)雜的關(guān)系算法用對(duì)象的方式描述,在很大程度上簡(jiǎn)化了對(duì)數(shù)據(jù)的查詢,加快了開(kāi)發(fā)的效率。在Hibernate中有一個(gè)簡(jiǎn)單而直觀的API,用于對(duì)數(shù)據(jù)庫(kù)所表示的對(duì)象執(zhí)行查詢。要?jiǎng)?chuàng)建或修改這些對(duì)象,只需在程序中與它們進(jìn)行交互,然后告訴Hibernate保存即可。這樣,大量封裝持久化操作的業(yè)務(wù)邏輯不再需要編寫(xiě)煩瑣的JDBC語(yǔ)句,從而使數(shù)據(jù)持久層得到了極大的簡(jiǎn)化。
用Struts實(shí)現(xiàn)MVC架構(gòu)
MVC(Model-View-Controller)由Trygve Reenskaug提出,首先被應(yīng)用在SmallTalk-80環(huán)境中,是許多交互和界面系統(tǒng)的構(gòu)成基礎(chǔ)。根據(jù)界面設(shè)計(jì)可變性的需求,MVC把交互系統(tǒng)的組成分解成模型、視圖、控制器三部分。
模型(Model)是軟件所處理問(wèn)題邏輯在獨(dú)立于外在顯示內(nèi)容和形式情況下的內(nèi)在抽象,封裝了問(wèn)題的核心數(shù)據(jù)、邏輯和功能的計(jì)算關(guān)系,獨(dú)立于具體的界面表達(dá)和I/O操作。視圖(View)把表示模型數(shù)據(jù)及邏輯關(guān)系和狀態(tài)的信息及特定形式展示給用戶。它從模型獲得顯示信息,對(duì)于相同的信息可以有多個(gè)不同的顯示形式或視圖。控制器(Controller)是處理用戶與軟件的交互操作的,其職責(zé)是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對(duì)應(yīng)聯(lián)系;它接受用戶的輸入,將輸入反饋給模型,進(jìn)而實(shí)現(xiàn)對(duì)模型的計(jì)算控制,是使模型和視圖協(xié)調(diào)工作的部件。通常一個(gè)視圖對(duì)應(yīng)一個(gè)控制器。模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無(wú)論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化-傳播機(jī)制。
Struts框架最早是作為Apache Jakarta項(xiàng)目的組成部分問(wèn)世運(yùn)做,它繼承了MVC的各項(xiàng)特性,并根據(jù)J2EE的特點(diǎn),做了相應(yīng)的變化與擴(kuò)展。Struts框架很好的結(jié)合了Jsp,Java Servlet,Java Bean,Taglib等技術(shù)。在Struts中,承擔(dān)MVC中控制器角色的是ActionServlet。ActionServlet是一個(gè)通用的控制組件。這個(gè)控制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些請(qǐng)求到相應(yīng)的動(dòng)作類(這些動(dòng)作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請(qǐng)求參數(shù)填充Action Form(FromBean),并傳給動(dòng)作類(ActionBean)。動(dòng)作類訪問(wèn)核心商業(yè)邏輯,即訪問(wèn)Java Bean或調(diào)用EJB。***動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件,由JSP文件生成視圖。所有這些控制邏輯利用Struts-config.xml文件來(lái)配置。在Struts框架中,視圖主要由JSP生成頁(yè)面完成,Struts提供豐富的JSP標(biāo)簽庫(kù),這有利于分開(kāi)表現(xiàn)邏輯和程序邏輯。模型以一個(gè)或多個(gè)Java Bean的形式存在。在Struts中,主要存在三種Bean,分別是:Action,ActionForm,EJB或者Java Bean。
Struts框架沒(méi)有具體定義模型層的實(shí)現(xiàn),在實(shí)際開(kāi)發(fā)中,模型層通常是和業(yè)務(wù)邏輯緊密相連的,并且要對(duì)底層數(shù)據(jù)進(jìn)行操作。下面介紹一種開(kāi)發(fā)策略,將Hibernate引入到Struts框架的模型層中,使用它來(lái)進(jìn)行數(shù)據(jù)封裝和映射,提供持久化的支持。
運(yùn)用Hibernate+Struts開(kāi)發(fā)J2EE應(yīng)用
1、體系結(jié)構(gòu)
圖3顯示了基于Hibernate+Struts開(kāi)發(fā)策略的體系結(jié)構(gòu)圖。
2、開(kāi)發(fā)實(shí)踐
下面結(jié)合開(kāi)發(fā)實(shí)踐,以在J2EE應(yīng)用開(kāi)發(fā)中非常普遍的用戶登錄過(guò)程為例,來(lái)說(shuō)明上述體系結(jié)構(gòu)是如何具體運(yùn)用的。登錄的流程非常清晰:用戶從登錄頁(yè)面login.jsp輸入登錄信息,系統(tǒng)對(duì)登錄信息進(jìn)行驗(yàn)證,如果正確則成功登錄,否則提示相應(yīng)錯(cuò)誤信息。
在開(kāi)發(fā)過(guò)程中,使用Eclipse做為開(kāi)發(fā)環(huán)境,同時(shí)加載了對(duì)Struts+Hibernate提供更好的控制和支持的第三方插件MyEclipse,Web服務(wù)器使用Tomcat,數(shù)據(jù)庫(kù)選用了MySQL。
首先對(duì)Hibernate進(jìn)行配置,只需要對(duì)系統(tǒng)自動(dòng)生成的hibernate.cfg.xml進(jìn)行修改,配置好數(shù)據(jù)庫(kù)連接的各種參數(shù)以及定義數(shù)據(jù)映射文件。由于Hibernate所帶的連接池主要用于測(cè)試,性能不是很好,可以通過(guò)JNDI將其修改為使用Tomcat的連接池。配置文件代碼中關(guān)鍵的一部分如下:
<hibernate-configuration><session-factory> <property name="connection.datasource">java:comp/env/jdbc/ sysdb </property> <property name="dialect">net.sf.hibernate.dialect.MySQLDialect </property> <mapping resource="User.hbm.xml"/> </session-factory></hibernate-configuration> |
其次是生成持久化類,實(shí)際上,由于使用了Hibernate,持久化類以及對(duì)持久化對(duì)象的映射定義均可以借助于系統(tǒng)中的向?qū)ё詣?dòng)生成。持久化對(duì)象的映射定義放到了User.hbm.xml中。部分代碼如下:
<class name=”User” table=”tUser”> <id name=”UserID” column=”User_ID” type=”java.lang.Integer”> <generator class=”native”></id> <property name=”UserName” column=”User_Name” type=”java.lang.String”> …..</class> |
再次,使用Struts框架來(lái)實(shí)現(xiàn)邏輯控制,利用系統(tǒng)提供的向?qū)Э梢陨梢晥D及控制器。具體的配置在Struts-config.xml文件中。相關(guān)代碼如下:
<form-beans> <form bean name=”LoginForm” type=”com.LoginForm”> </form-beans> <action-mappings> <action attribute=”LoginForm” input=”Login.jsp” path=”/DoLogin” …. </action> </action-mappings> |
輸入頁(yè)面Login.jsp將用戶填寫(xiě)的登錄信息提交給控制器DoLogin進(jìn)行處理,控制器調(diào)用由Hibernate定義好的持久化類User從數(shù)據(jù)庫(kù)中讀取相應(yīng)信息進(jìn)行驗(yàn)證。操作完成后將提示信息展示在表示層中。DoLogin中使用語(yǔ)句User u1=UserDAO.findbyname(username)得到User對(duì)象,然后就可以進(jìn)行登錄信息的驗(yàn)證。
從整個(gè)開(kāi)發(fā)過(guò)程可以看出,程序員除了利用向?qū)?duì)有關(guān)的配置文件進(jìn)行修改,只須編寫(xiě)少量代碼即可完成登錄模塊的編碼。開(kāi)發(fā)完成的模塊符合MVC框架的要求,質(zhì)量比較高,易于修改和維護(hù)。
以上是“如何使用Hibernate+Struts實(shí)現(xiàn)J2EE應(yīng)用開(kāi)發(fā)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享題目:如何使用Hibernate+Struts實(shí)現(xiàn)J2EE應(yīng)用開(kāi)發(fā)
分享URL:http://chinadenli.net/article20/geocco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、做網(wǎng)站、網(wǎng)站策劃、網(wǎng)站營(yíng)銷、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)