淺談利用開源框架Struts+Hibernate實現Web應用程式

才智咖 人氣:2.93W

摘 要:本文主要介紹了利用目前的開源框架來開發一MVC結構Web程式的主要過程,對作為Struts與Hibernate核心的配置檔案作了簡單介紹,最後提出了在開發類似專案時可能會遇到的一些問題和解決方案。

淺談利用開源框架Struts+Hibernate實現Web應用程式

關鍵詞:Web;開源框架;解決方案;Struts;Hibernate;MVC;計算機

一、概述

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

二、資料庫設計及持久化

大多數Web應用都要涉及到資料庫,資料庫的設計是系統設計首先要考慮的問題,資料庫設計得是否合理對系統的設計有著直接的影響,資料庫如果設計的不好,有可能會使整個系統在最後階段推倒重建。這裡我們不打算詳細討論資料庫的設計細節,只要遵循一般的資料庫設計原則即可。包括找出所有實體,建立關係,畫ER圖,建立資料庫表等。持久化是通過Hibernate來實現的,Hibernate對資料庫的增加、刪除、更新、查詢操作進行了封裝,使程式設計師可以使用物件導向的方式來設計程式,而不用為寫大量的SQL語句而苦惱。因此我們需要建立相應的配置檔案來幫助程式完成資料持久化,其中包括一個Hibernate基本配置檔案和若干個資料庫表與基本Java類對應的配置檔案,以使用者登入系統為例,二配置檔案主要內容

:(使用Mysql資料庫)

?xml version=‘1.0‘ encoding=‘utf-8‘?

!DOCTYPE hibernate-configuration

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

""

hibernate-configuration

session-factory

property name="er_class"er/property

property name=""jdbc:mysql:///user/property

property name="name"root/property

property name="word"/property

property name="_size"100/property

property name="dialect" LDialect/property

!-- Mapping files --

mapping resource=""/

/session-factory

/hibernate-configuration

:

?xml version="1.0"?

!DOCTYPE hibernate-mapping PUBLIC

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

""

hibernate-mapping

class

name=" "

table="user"

id

name="id"

type="ng"

column="id"

generator class="assigned" /

/id

property

name="name"

type="ng"

column="name"

not-null="true"

length="20"

/

property

name="psw"

type="ng"

column="psw"

not-null="true"

length="20"

/

/class

/hibernate-mapping

三、檢視(View)元件的實現

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

其他的檢視頁面檔案只需使用簡單的Jsp檔案即可。

四、控制器(Control)元件的實現

控制器是Struts的核心,主要負責接受客戶端的HTTL請求,更新屬性以及生成Jsp頁面呈現在客戶端瀏覽器上,它位於試圖元件(V)與模型元件(M)之間,將二者有機地聯絡起來,發揮協調作用。控制器元件的核心是一個Action類,它主要負責訪問業務邏輯層,類中的execute方法負責處理使用者的請求,所以我們主要的工作就是改寫execute方法,在其中新增相關的業務邏輯處理程式碼。

五、配置與檔案

在設計完資料層、檢視層和控制層後,還要對與檔案進行配置,檔案是MVC各層聯絡的紐帶,它主要定義了form表單的名稱及對應的具體類,配置了與表單對應的處理Action類及執行後轉發的`頁面,配置了請求範圍和錯誤提示頁面等。只有一個登入模組的檔案可能會象下面這樣:

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

!DOCTYPE struts-config PUBLIC

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

"_1_"

struts-config

form-beans

form-bean type="nActionForm" name="loginActionForm"/

/form-beans

action-mappings

!-- *************** login **************** --

action path="/login"

type="nAction"

name="loginActionForm"

scope="request"

input="/"

forward name="success" path="/"/

/action

……

/struts-config

是一個通用的配置檔案,適用於所有Web應用,它主要配置了ActionServlet的宣告和初始化,系統啟動是建立Servlet的例項數目,系統初始化引數配置,預設顯示的頁面等。鑑於篇幅具體檔案內容在此省略。

六、中文問題

由於瀏覽器與Java採用的字元編碼不同,所以在進行中文儲存與顯示時常出現亂碼,常用的解決方法是編寫一個過濾器元件,進行編碼的轉換,然後在檔案中對過濾器進行配置。

七、其他問題

由於資料來源的多樣性,如:Oracle,MySQL,SQL Server等,一旦資料來源發生變化,或將來由於某種原因而不再使用Hibernate,在資料層會有較大改動,為保證系統的靈活性,通常的做法是在資料層使用DAO模式,即在業務核心方法與具體資料來源之間再增加一層,用這一層來連線業務邏輯與資料來源,實現二者的解藕。

八、結束語

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

參考文獻:

[1] 鄔繼成ts與Hibernate實用教程.電子工業出版社.2006.

[2] 張桂元 賈燕楓. Struts開發入門與專案實踐.人民郵電出版社.2005.

[3] 樑立新.專案實踐精解:基於Struts-Spring-Hibernate的Java應用開發.電子工業出版社.2006.