網站開發:Struts和Hibernate的完美結合

來源:互聯網
上載者:User
關鍵字 Struts

仲介交易 SEO診斷 淘寶客 雲主機 技術大廳

在最近的課程設計中,要求我們使用Struts框架和HIbernate框架結合來完成一個學生選課系統。 很多同學因沒有學懂這兩個框架而有所抱怨,抱怨到為什麼不使用MVC模式,因為他們已經對MVC瞭若指掌。

因此我就不得不說JSO網站開發中存在的兩種模式了。

Mode1

簡單的說,Mode1模式也分為兩種情況,一種是完全使用JSP來開發,而另一種則是使用JSP+JavaBean來開發。 這兩種方案的唯一優點就在於,適合於小型的網站開發中,例如一個簡單的個人主頁,使用Mode1模式是你的首選方案。

當然如果你的專案足夠小,使用純JSP來開發,讓你的維護也會更加簡單。 因為它免去了修改JavaBean之後,還需要重新編譯為".class"檔的麻煩。

而Mode1的缺點也是不可忽視的,開發過程中,將大量的邏輯處理代碼放在了JSP和JavaBean中,這導致了JavaBean複雜度增加,關聯程度 提高(也叫耦合度),我們在完美開發中追求的是"高內聚低耦合", 所以在大型的專案開發中,我們還是會把Mode1模式丟在一旁的。

  

Mode1示意圖

Mode2

Mode2中是以servlet為主體的,通過servlet接受客戶請求,調用不同的JavaBean處理,將結果返回到JSP頁面中,如此分工明確, 效率提高,而且方便專案維護,是大型網站建設的首選。 在Mode2中,有一個叫做MVC的設計模式。 它設計模式分為模型層,顯示層,控制層。

  

MVC設計模式

這樣理解MVC和Struts

如果你難以理解MVC和Struts到底有何關聯,那麼你可以這樣認為:MVC是一個定義的標準interface(介面),而Struts只是完美的實現了MVC介面而已。 除了Struts,EJB也是一個MVC的實現。

Struts和Hibernate的結合

現在不難理解,在整個"學生選課系統"設計過程中,Struts是用來獲取表單資料的,Hibernate是用來持久化物件到資料庫的。 基本的設計流程為:

一:介面設計,首先你需要將前臺的頁面構造完美,給消費者留下一個好的印象。

  

這是我設計的前臺登陸介面

二:考慮持久層:就那當前的專案來說,"學生選課系統"當以學生為主,每位學生是可以選擇多門學科的,所以存在了一對多的關係,在Hibernate中使 用標籤進行關係的映射。 通過匯出映射關係到資料庫中。 就可以將物件關係持久化到資料庫中了。

三:Struts過程:通過Struts來獲得表單資料,再通過調用Hibernate的HQL語句進行資料的驗證,是登陸驗證的關鍵所在。 等整個系統修 改完畢,我會將具體代碼貼出供大家參考。 而對於前臺資料的驗證,我沒有使用JAVAscript和是使用了Struts的Validaate驗證框架,如 果你不懂這個,你可以參照<>。

關於Hibernate和Mysql編碼問題

編碼問題是最讓人抓狂的問題,使用Hibernate存入中文字元,而資料庫確實一堆的"???" 讓人很是惱火。 我們需要做的就是編碼的統一。 而 「UTF-8」的編碼優勢我就不說了,它完全可以支援中午編碼顯示,所以我們在構造資料庫過程中,最後手動為其設置模式編碼方式,CREATE DATABASE test DEFAULT CHARSET=UTF8。

之後需要修改的就是Hibernate的編碼方式了。 方案一:

在「hibernate.cfg.xml」檔中,應該如此寫「URL」的配置:

Xml 代碼

<property name="connection.url">jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding= UTF-8</property>

方案二:

1, mysql安裝時設置字元集utf-8(包括資料庫字元集,以及表的字元集), jdbc驅動用最新的。

2.hibernate設定檔(hibernate.cfg.xml)中,加上屬性

Xml 代碼

&lt;property name="connection.useUnicode"&gt;true&lt;/property&gt; &lt;property name=" connection.characterEncoding"&gt;UTF-8&lt;/property&gt;

3. web.xml設置Filter

Xml 代碼

&lt;filter&gt; &lt;filter-name&gt; Set Web Application Character Encoding &lt;/filter-name&gt; &lt;filter-class&gt; com.util.SetEncodeFilter&lt;/filter-class&gt; &lt;init-param&gt; &lt;param-name&gt;defaultencoding&lt;/ param-name&gt; &lt;param-value&gt;UTF-8&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &nbsp; &lt; filter-mapping&gt; &nbsp; &lt;filter-name&gt; &nbsp; Set Web Application Character Encoding &nbsp; &lt;/filter-name&gt; & nbsp; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &nbsp; &lt;/filter-mapping&gt;
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.