<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 利用開源框架Struts+Hibernate實現(xiàn)Web應(yīng)用程序

    • 相關(guān)推薦

    利用開源框架Struts+Hibernate實現(xiàn)Web應(yīng)用程序

      摘 要:本文主要介紹了利用目前的開源框架來開發(fā)一MVC結(jié)構(gòu)Web程序的主要過程,對作為Struts與Hibernate核心的配置文件作了簡單介紹,最后提出了在開發(fā)類似項目時可能會遇到的一些問題和解決方案。

      關(guān)鍵詞:Web;開源框架;解決方案;Struts;Hibernate;MVC;計算機(jī)

      一、概述

      大多數(shù)Web應(yīng)用在職責(zé)上至少可被分成四層,表示層、持久層、業(yè)務(wù)層和域模塊層,每一層相互獨立,在功能上與其他層互不混合,這樣為程序的后期維護(hù)及擴(kuò)充提供了方便,而在Web應(yīng)用的分層設(shè)計中,MVC模式成為一種十分流行的結(jié)構(gòu),Struts則是MVC模式的一種具體實現(xiàn),他讓開發(fā)人員可以把主要精力集中在如何解決實際業(yè)務(wù)處理問題上,同時Struts框架也允許開發(fā)人員根據(jù)實際需求進(jìn)行擴(kuò)展和定制,從而更好地適應(yīng)用戶的需要。在數(shù)據(jù)持久層上,Hibernate是目前最好的框架之一,Hibernate不僅管理Java類到數(shù)據(jù)庫表的映射,還提供數(shù)據(jù)查詢和獲取數(shù)據(jù)的方法,可以大幅減少開發(fā)時人工使用SQL和JDBC處理數(shù)據(jù)的時間。Struts架構(gòu)與Hibernate相結(jié)合實現(xiàn)Web應(yīng)用已成為Web Service十分流行的解決方案。下面我們將簡要介紹一下采用Struts+Hibernate實現(xiàn)Web應(yīng)用的主要方法。

      二、數(shù)據(jù)庫設(shè)計及持久化

      大多數(shù)Web應(yīng)用都要涉及到數(shù)據(jù)庫,數(shù)據(jù)庫的設(shè)計是系統(tǒng)設(shè)計首先要考慮的問題,數(shù)據(jù)庫設(shè)計得是否合理對系統(tǒng)的設(shè)計有著直接的影響,數(shù)據(jù)庫如果設(shè)計的不好,有可能會使整個系統(tǒng)在最后階段推倒重建。這里我們不打算詳細(xì)討論數(shù)據(jù)庫的設(shè)計細(xì)節(jié),只要遵循一般的數(shù)據(jù)庫設(shè)計原則即可。包括找出所有實體,建立關(guān)系,畫ER圖,建立數(shù)據(jù)庫表等。持久化是通過Hibernate來實現(xiàn)的,Hibernate對數(shù)據(jù)庫的增加、刪除、更新、查找操作進(jìn)行了封裝,使程序員可以使用面向?qū)ο蟮姆绞絹碓O(shè)計程序,而不用為寫大量的SQL語句而苦惱。因此我們需要建立相應(yīng)的配置文件來幫助程序完成數(shù)據(jù)持久化,其中包括一個Hibernate基本配置文件和若干個數(shù)據(jù)庫表與基本Java類對應(yīng)的配置文件,以用戶登錄系統(tǒng)為例,二配置文件主要內(nèi)容如下:

      hibernate.cfg.xml:(使用Mysql數(shù)據(jù)庫)

      PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"

      "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

      com.mysql.jdbc.Driver

      jdbc:mysql:///user

      root

      100

      org.hibernate.dialect.MySQLDialect

      User.hbm.xml:

      "-//Hibernate/Hibernate Mapping DTD 2.0//EN"

      "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >

      name=" hibernate.User"

      table="user"

      >

      name="id"

      type="java.lang.String"

      column="id"

      >

      name="name"

      type="java.lang.String"

      column="name"

      not-null="true"

      length="20"

      />

      name="psw"

      type="java.lang.String"

      column="psw"

      not-null="true"

      length="20"

      />

      三、視圖(View)組件的實現(xiàn)

      當(dāng)用戶提交表單時(如當(dāng)用戶登錄時)Struts會把請求參數(shù)封裝到動作表單(Form Bean)里,所以我們需要建立一個動作表單類,它繼承ActionForm類,這個表單類實際上是一個JavaBean,類中需要創(chuàng)建與HTML提交表單中字段對應(yīng)的相同名稱的屬性,并創(chuàng)建每一個屬性的set和get方法,如登錄表單中有用戶名(name)和密碼(psw)兩個字段,則在表單類中應(yīng)創(chuàng)建與之對應(yīng)的屬性name和psw,同時創(chuàng)建對應(yīng)的方法setName()、getName()、setPsw()、getPsw(),另外還可以有Validate方法對輸入字段進(jìn)行驗證。

      其他的視圖頁面文件只需使用簡單的Jsp文件即可。

      四、控制器(Control)組件的實現(xiàn)

      控制器是Struts的核心,主要負(fù)責(zé)接受客戶端的HTTL請求,更新屬性以及生成Jsp頁面呈現(xiàn)在客戶端瀏覽器上,它位于試圖組件(V)與模型組件(M)之間,將二者有機(jī)地聯(lián)系起來,發(fā)揮協(xié)調(diào)作用。控制器組件的核心是一個Action類,它主要負(fù)責(zé)訪問業(yè)務(wù)邏輯層,類中的execute方法負(fù)責(zé)處理用戶的請求,所以我們主要的工作就是改寫execute方法,在其中添加相關(guān)的業(yè)務(wù)邏輯處理代碼。

      五、配置struts-config.xml與Web.xml文件

      在設(shè)計完數(shù)據(jù)層、視圖層和控制層后,還要對struts-config.xml與Web.xml文件進(jìn)行配置,struts-config.xml文件是MVC各層聯(lián)系的紐帶,它主要定義了form表單的名稱及對應(yīng)的具體類,配置了與表單對應(yīng)的處理Action類及執(zhí)行后轉(zhuǎn)發(fā)的頁面,配置了請求范圍和錯誤提示頁面等。只有一個登錄模塊的struts-config.xml文件可能會象下面這樣:

      "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"

      "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

      type="action.LoginAction"

      name="loginActionForm"

      scope="request"

      input="/login.jsp">

      ……

      Web.xml是一個通用的配置文件,適用于所有Web應(yīng)用,它主要配置了ActionServlet的聲明和初始化,系統(tǒng)啟動是創(chuàng)建Servlet的實例數(shù)目,系統(tǒng)初始化參數(shù)配置,默認(rèn)顯示的頁面等。鑒于篇幅具體文件內(nèi)容在此省略。

      六、中文問題

      由于瀏覽器與Java采用的字符編碼不同,所以在進(jìn)行中文存儲與顯示時常出現(xiàn)亂碼,常用的解決方法是編寫一個過濾器組件,進(jìn)行編碼的轉(zhuǎn)換,然后在Web.xml文件中對過濾器進(jìn)行配置。

      七、其他問題

      由于數(shù)據(jù)源的多樣性,如:Oracle,MySQL,SQL Server等,一旦數(shù)據(jù)源發(fā)生變化,或?qū)碛捎谀撤N原因而不再使用Hibernate,在數(shù)據(jù)層會有較大改動,為保證系統(tǒng)的靈活性,通常的做法是在數(shù)據(jù)層使用DAO模式,即在業(yè)務(wù)核心方法與具體數(shù)據(jù)源之間再增加一層,用這一層來連接業(yè)務(wù)邏輯與數(shù)據(jù)源,實現(xiàn)二者的解藕。

      八、結(jié)束語

      通過對一個通用的Web應(yīng)用程序的設(shè)計,我們可了解使用Struts+Hibernate框架設(shè)計Web應(yīng)用系統(tǒng)的一般過程,表面看來使用Struts+Hibernate框架比單獨使用Jsp+JavaBean方式還要復(fù)雜,但這樣做的好處也顯而易見,那就是設(shè)計的程序?qū)哟吻逦绦虻目删S護(hù)性與可擴(kuò)充性大大加強(qiáng),各層次間的耦合性非常小,將來一旦有需求變化,可以很容易更改。我想在程序設(shè)計的初期多做一些工作來換取程序良好的可維護(hù)性、可擴(kuò)充性及可移植性是值得的。

      參考文獻(xiàn):

      [1] 鄔繼成.Struts與Hibernate實用教程.電子工業(yè)出版社.2006.

      [2] 張桂元 賈燕楓. Struts開發(fā)入門與項目實踐.人民郵電出版社.2005.

      [3] 梁立新.項目實踐精解:基于Struts-Spring-Hibernate的Java應(yīng)用開發(fā).電子工業(yè)出版社.2006.

    【利用開源框架Struts+Hibernate實現(xiàn)Web應(yīng)用程序】相關(guān)文章:

    利用PowerBuilder開發(fā)WEB應(yīng)用03-19

    VC++實現(xiàn)串口通信的應(yīng)用程序設(shè)計03-07

    論利用ebXML和SOAP開發(fā)Web服務(wù)03-18

    WEB服務(wù)器多框架解決方案03-18

    基于Web的嵌入式數(shù)控系統(tǒng)實現(xiàn)03-07

    Web搜索引擎的智能搜索設(shè)計與實現(xiàn)03-08

    用Borland C 3.1實現(xiàn)外設(shè)與Windows應(yīng)用程序?qū)崟r通信03-21

    基于Web的單片機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)03-07

    利用VB的MSComm控件實現(xiàn)GPS數(shù)據(jù)采集03-07

    利用ColdFire uClinux實現(xiàn)數(shù)據(jù)采集和傳輸03-19

    主站蜘蛛池模板: 日本精品一区二区三区在线视频一| 久久精品国产只有精品66| 思思99热在线观看精品| 精品国产污污免费网站入口| 精品熟女少妇a∨免费久久| 国产精品小黄鸭一区二区三区| 久久国产热精品波多野结衣AV| 国产精品婷婷午夜在线观看| 精品亚洲成a人片在线观看少妇| 精品乱子伦一区二区三区| 国产精品久久免费| 日韩国产精品无码一区二区三区| 久久亚洲国产精品五月天婷| 日韩精品在线一区二区| 精品国产三级a∨在线| 合区精品久久久中文字幕一区| 国产成人久久精品麻豆一区| 国产成人精品福利网站在线| 色妞ww精品视频7777| 免费人欧美日韩在线精品 | 国产精品美女久久久久网| 亚洲一区爱区精品无码| 久久91这里精品国产2020| 99re只有精品8中文| 国产一精品一av一免费爽爽| 99久久国产综合精品网成人影院| 97精品在线播放| 久久综合精品国产二区无码| 欧美成人精品一区二三区在线观看| 2021国产三级精品三级在专区| 国产成人精品日本亚洲直接| 久久久久久青草大香综合精品| 亚洲国产综合91精品麻豆| 精品人妻伦一二三区久久 | 国产精品无码AV一区二区三区| 亚洲精品永久在线观看| 高清在线国产午夜精品| 久久国产精品无码一区二区三区| 午夜国产精品无套| 亚洲精品自在在线观看| 精品无码专区亚洲|