自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate+Struts的J2EE應(yīng)用開發(fā)

開發(fā) 后端
本文分析了Hibernate+Struts的機(jī)制,提出了一種基于Hibernate+Struts的J2EE應(yīng)用開發(fā)策略。這種策略可大大降低代碼的耦合性以及提高系統(tǒng)的開發(fā)效率。
  隨著Java技術(shù)的逐漸成熟與完善,作為建立企業(yè)級應(yīng)用的標(biāo)準(zhǔn)平臺,J2EE平臺得到了長足的發(fā)展。借助于J2EE規(guī)范中包含的多項(xiàng)技術(shù):Enterprise JavaBean(EJB)、Java Servlets(Servlet)、Java Server Pages(JSP)、Java Message Service(JMS)等,開發(fā)出了許多應(yīng)用系統(tǒng)。但是,在傳統(tǒng)J2EE應(yīng)用的開發(fā)過程中也出現(xiàn)了一些問題:1)數(shù)據(jù)模型和邏輯模型之間的矛盾。目前使用的數(shù)據(jù)庫基本上都是關(guān)系型數(shù)據(jù)庫,而Java本質(zhì)上是一種面向?qū)ο蟮恼Z言,對象在存儲和讀取時使用SQL和JDBC進(jìn)行數(shù)據(jù)庫操作,降低了編程的效率以及系統(tǒng)的可維護(hù)性;2)傳統(tǒng)的J2EE應(yīng)用多采用基于EJB的重量級框架,這種框架適合于開發(fā)大型企業(yè)應(yīng)用,但是使用EJB容器進(jìn)行開發(fā)和調(diào)試需要耗費(fèi)大量時間。為了降低代碼的耦合性,提高系統(tǒng)的開發(fā)效率,本文提出了一種基于Struts框架和Hibernate框架的J2EE應(yīng)用開發(fā)策略。

  數(shù)據(jù)持久層及Hibernate

  Hibernate是一個數(shù)據(jù)持久層框架,是一種實(shí)現(xiàn)對象和關(guān)系之間映射(O/R Mapping)的工具,它對JDBC進(jìn)行了輕量級的對象封裝,使程序員可以使用對象編程思想來操作數(shù)據(jù)庫。它不僅提供了從Java類到數(shù)據(jù)表的映射,也提供了數(shù)據(jù)查詢和恢復(fù)機(jī)制。相對于使用JDBC和SQL來操作數(shù)據(jù)庫,使用Hibernate能大大的提高實(shí)現(xiàn)的效率。Hibernate框架用配置文件的形式來定義Java對象和數(shù)據(jù)表之間的映射關(guān)系,同時在更深的層面將數(shù)據(jù)表之間的關(guān)系解釋為Java對象之間的繼承及包含等關(guān)系。通過使用HQL語句將復(fù)雜的關(guān)系算法用對象的方式描述,在很大程度上簡化了對數(shù)據(jù)的查詢,加快了開發(fā)的效率。在Hibernate中有一個簡單而直觀的API,用于對數(shù)據(jù)庫所表示的對象執(zhí)行查詢。要創(chuàng)建或修改這些對象,只需在程序中與它們進(jìn)行交互,然后告訴Hibernate保存即可。這樣,大量封裝持久化操作的業(yè)務(wù)邏輯不再需要編寫煩瑣的JDBC語句,從而使數(shù)據(jù)持久層得到了極大的簡化。

  用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)是軟件所處理問題邏輯在獨(dú)立于外在顯示內(nèi)容和形式情況下的內(nèi)在抽象,封裝了問題的核心數(shù)據(jù)、邏輯和功能的計(jì)算關(guān)系,獨(dú)立于具體的界面表達(dá)和I/O操作。視圖(View)把表示模型數(shù)據(jù)及邏輯關(guān)系和狀態(tài)的信息及特定形式展示給用戶。它從模型獲得顯示信息,對于相同的信息可以有多個不同的顯示形式或視圖??刂破鳎–ontroller)是處理用戶與軟件的交互操作的,其職責(zé)是控制提供模型中任何變化的傳播,確保用戶界面于模型間的對應(yīng)聯(lián)系;它接受用戶的輸入,將輸入反饋給模型,進(jìn)而實(shí)現(xiàn)對模型的計(jì)算控制,是使模型和視圖協(xié)調(diào)工作的部件。通常一個視圖對應(yīng)一個控制器。模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化-傳播機(jī)制。


  Struts框架最早是作為Apache Jakarta項(xiàng)目的組成部分問世運(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是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點(diǎn)。它截取和分發(fā)這些請求到相應(yīng)的動作類(這些動作類都是Action類的子類)。另外控制組件也負(fù)責(zé)用相應(yīng)的請求參數(shù)填充Action Form(FromBean),并傳給動作類(ActionBean)。動作類訪問核心商業(yè)邏輯,即訪問Java Bean或調(diào)用EJB。***動作類把控制權(quán)傳給后續(xù)的JSP文件,由JSP文件生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。在Struts框架中,視圖主要由JSP生成頁面完成,Struts提供豐富的JSP標(biāo)簽庫,這有利于分開表現(xiàn)邏輯和程序邏輯。模型以一個或多個Java Bean的形式存在。在Struts中,主要存在三種Bean,分別是:Action,ActionForm,EJB或者Java Bean。

  Struts框架沒有具體定義模型層的實(shí)現(xiàn),在實(shí)際開發(fā)中,模型層通常是和業(yè)務(wù)邏輯緊密相連的,并且要對底層數(shù)據(jù)進(jìn)行操作。下面介紹一種開發(fā)策略,將Hibernate引入到Struts框架的模型層中,使用它來進(jìn)行數(shù)據(jù)封裝和映射,提供持久化的支持。

  運(yùn)用Hibernate+Struts開發(fā)J2EE應(yīng)用

  1、體系結(jié)構(gòu)

  圖3顯示了基于Hibernate+Struts開發(fā)策略的體系結(jié)構(gòu)圖。


  2、開發(fā)實(shí)踐

  下面結(jié)合開發(fā)實(shí)踐,以在J2EE應(yīng)用開發(fā)中非常普遍的用戶登錄過程為例,來說明上述體系結(jié)構(gòu)是如何具體運(yùn)用的。登錄的流程非常清晰:用戶從登錄頁面login.jsp輸入登錄信息,系統(tǒng)對登錄信息進(jìn)行驗(yàn)證,如果正確則成功登錄,否則提示相應(yīng)錯誤信息。

  在開發(fā)過程中,使用Eclipse做為開發(fā)環(huán)境,同時加載了對Struts+Hibernate提供更好的控制和支持的第三方插件MyEclipse,Web服務(wù)器使用Tomcat,數(shù)據(jù)庫選用了Mysql。

  首先對Hibernate進(jìn)行配置,只需要對系統(tǒng)自動生成的hibernate.cfg.xml進(jìn)行修改,配置好數(shù)據(jù)庫連接的各種參數(shù)以及定義數(shù)據(jù)映射文件。由于Hibernate所帶的連接池主要用于測試,性能不是很好,可以通過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,持久化類以及對持久化對象的映射定義均可以借助于系統(tǒng)中的向?qū)ё詣由?。持久化對象的映射定義放到了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框架來實(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>

  輸入頁面Login.jsp將用戶填寫的登錄信息提交給控制器DoLogin進(jìn)行處理,控制器調(diào)用由Hibernate定義好的持久化類User從數(shù)據(jù)庫中讀取相應(yīng)信息進(jìn)行驗(yàn)證。操作完成后將提示信息展示在表示層中。DoLogin中使用語句User u1=UserDAO.findbyname(username)得到User對象,然后就可以進(jìn)行登錄信息的驗(yàn)證。

  從整個開發(fā)過程可以看出,程序員除了利用向?qū)τ嘘P(guān)的配置文件進(jìn)行修改,只須編寫少量代碼即可完成登錄模塊的編碼。開發(fā)完成的模塊符合MVC框架的要求,質(zhì)量比較高,易于修改和維護(hù)。

  總結(jié)與展望

  Hibernate是一個功能強(qiáng)大、高性能、非常流行的ORM工具,它推動了基于普通Java對象模型、用于映射底層數(shù)據(jù)結(jié)構(gòu)的持久對象的開發(fā),能夠提供高級數(shù)據(jù)查詢和檢索服務(wù)。Struts是一個優(yōu)秀的基于J2EE平臺的MVC框架,它簡化了WEB層的開發(fā),實(shí)現(xiàn)了應(yīng)用程序的顯示邏輯和業(yè)務(wù)邏輯的分離。將這兩種技術(shù)結(jié)合起來進(jìn)行J2EE應(yīng)用開發(fā),能極大的提高開發(fā)效率,使系統(tǒng)具有更好的可維護(hù)性和可擴(kuò)展性。這種開發(fā)策略正逐漸被眾多程序員所接受,在實(shí)際開發(fā)中得到廣泛的應(yīng)用。

【編輯推薦】

  1. 高手Java核心技術(shù)學(xué)習(xí)筆記
  2. 告訴你怎樣學(xué)Java才是硬道理
  3. 如何獲取Sun推出的Java認(rèn)證
  4. 共同學(xué)習(xí)Java環(huán)境變量
  5. JAVA環(huán)境變量的設(shè)置
責(zé)任編輯:王觀 來源: 天極網(wǎng)
相關(guān)推薦

2009-06-22 11:11:00

J2EE架構(gòu)數(shù)據(jù)表示

2009-06-16 13:27:59

Hibernate x

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2009-06-18 16:13:14

J2EE開發(fā)

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2009-06-22 11:50:00

J2EE Web應(yīng)用快速開發(fā)

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2009-06-19 17:29:12

Struts常見錯誤J2EE

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-22 17:09:00

J2EE項(xiàng)目開發(fā)流程

2013-05-28 11:29:19

struts2

2009-06-23 16:48:26

J2EE常見問題J2EE平臺

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-30 17:02:31

J2EE實(shí)現(xiàn)分頁

2011-07-21 14:23:03

J2EE

2009-06-10 13:30:32

J2EE四層模型客戶層Web層

2009-06-22 16:21:02

J2EE線程

2009-06-22 11:15:00

J2EE應(yīng)用測試

2009-06-11 17:11:07

J2EE設(shè)計(jì)模式工廠模式

2009-06-11 17:07:49

WebsphereJ2EE應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號