不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學習啦>論文大全>畢業(yè)論文>計算機論文>計算機網(wǎng)絡>

計算機網(wǎng)絡

時間: 若木633 分享

  一、概述

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

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

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

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

  <?xml version='1.0' encoding='utf-8'?>

  <!DOCTYPE hibernate-configuration

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

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

  <hibernate-configuration>

  <session-factory>

  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

  <property name="hibernate.connection.url">jdbc:mysql:///user</property>

  <property name="hibernate.connection.username">root</property>

  <property name="hibernate.connection.password"></property>

  <property name="hibernate.connection.pool_size">100</property>

  <property name="dialect"> org.hibernate.dialect.MySQLDialect</property>

  <!-- Mapping files -->

  <mapping resource="user.hbm.xml"/>

  </session-factory>

  </hibernate-configuration>

  User.hbm.xml:

  <?xml version="1.0"?>

  <!DOCTYPE hibernate-mapping PUBLIC

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

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

  <hibernate-mapping>

  <class

  name=" hibernate.User"

  table="user"

  > <id

  name="id"

  type="java.lang.String"

  column="id"

  > <generator class="assigned" />

  </id>

  <property

  name="name"

  type="java.lang.String"

  column="name"

  not-null="true"

  length="20"

  />

  <property

  name="psw"

  type="java.lang.String"

  column="psw"

  not-null="true"

  length="20"

  />

  </class>

  </hibernate-mapping>

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

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

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

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

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

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

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

  <?xml version="1.0" encoding="ISO-8859-1" ?>

  <!DOCTYPE struts-config PUBLIC

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

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

  <struts-config>

  <form-beans>

  <form-bean type="form.LoginActionForm" name="loginActionForm"/>

  </form-beans>

  <action-mappings>

  <!-- *************** login **************** -->

  <action path="/login"

  type="action.LoginAction"

  name="loginActionForm"

  scope="request"

  input="/login.jsp">

  <forward name="success" path="/main.jsp"/>

  </action>

  ……

  </struts-config>

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

  六、中文問題

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

  七、其他問題

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

  八、結束語

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

84814