Struts2學習:Overview之Nutshell

 寫在前面的話:對Struts2的理解一直處於似懂非懂的狀態讓我很是苦悶,在使用的過程中Struts2的強大已經讓我歎爲觀止,不知道這個用詞是否準確。爲了更好的理解Struts2,決定拜讀下官方的guide,順便做下翻譯,希望自己能夠堅持下來,閱讀的過程中肯定有很多地方理解不了,但是還是打算直接譯出來,也許一段時間以後再毒一遍的話就能夠理解的更深刻了。

1.堅果殼中的apache struts2 體系

不知道爲什麼struts2的官方文檔中爲什麼要使用nutshell這個詞語來表述,我只好直譯了,也許是要表達一個框架的意思吧,整個struts2框架體系如下圖所示:


它的具體流程如下:

a.  首先瀏覽器發出請求,請求一個服務器端資源,這也許是一個action,也許是別的   什麼東西
b.  FilterDispatcher會對每個請求進行檢查,然後選擇合適的action
c.  攔截器會自動對客戶端的親求進行一些一般化的操作,例如工作流(workflow)、確認(validation)以及文件上傳的處理
d.  Action中的方法被執行,它通常都是向數據庫中存儲數據或者檢索數據
e.  Result會將輸出返回到瀏覽器,這通常是一個html文件或者圖片等等

2.堅果殼中的struts標籤

Struts中的標籤庫確實爲我們程序的編寫提供了很大的方便,使用struts標籤之後,程序代碼的數量確實減少了很多。除了減少代碼量之外,struts標籤相對於普通的html標籤而言功能更加強大,例如有的標籤還支持國際化、本地化等等,總之呢,struts標籤就是好,^_^,而且容易理解。不過說實話,我在項目中還是很不習慣又這個struts標籤,我一般都是採用的普通html標籤再加上jstl標籤。

3.堅果殼中的struts配置

一個web應用程序通常使用一個部署描述符來初始化諸如過濾器、監聽器之類的支援,這個部署描述符通常都是以xml文件的形式存在,並且命名爲web.xml。在struts2中你可以通過生命在web.xml中的java類來初始化資源,你還可以通過一個叫struts.xml的文件來完全控制這些配置。下面展示了一個典型的struts.xml配置文件:

  <struts>   
 <package name="default" extends="struts-default">       
        <action name="Logon" class="mailreader2.Logon">  
          <result name="input">/pages/Logon.jsp</result> 
           <result name="cancel" type="redirect-action">Welcome</result> 
           <result type="redirect-action">MainMenu</result>
            <result name="expired" type="chain">ChangePassword</result>
        </action> 
       <action name="Logoff" class="mailreader2.Logoff">
            <result type="redirect-action">Welcome</result>
        </action>
    </package>
  </struts>

3.堅果殼中的Struts MVC

Struts2是一個MVC框架,它提供了控制器(controller)和視圖(viewer)組件,並且和其它技術相結合來提供Model組件。框架的控制器可以看作是應用程序的Model和Web的view之間的一個橋樑。

爲了使動態顯示數據更加方便,struts框架還提供了一個標記庫。這些標籤能夠同框架的驗證(validation)、國際化(internationalization)特徵相互作用,確保輸入的正確性和輸出的本土化。標籤庫能同JSP、FreeMarker等一起使用,而且不影響其它的標籤庫如JSTL等的使用,它還支持JSF組件。

當一個請求達到的時候,控制器(Controller)會調用一個Action類。這個Action類會在“諮詢”Model組件(代表業務邏輯)後檢查或者更新應用程序的狀態,爲了在Model層和View層之間傳輸數據,我們可以在Action類中放置屬性,或者在一個POJO中放置。

絕大多數時候,Model看起來就像一個JavaBean對象。Model承擔了大多數的工作,而Action就像一個交通警察或者適配器一樣,只是負責一下監管。框架還提供了非常成熟且自動化的類型轉換器,藉此來簡化豐富的域對象與純文本的http請求之間的數據傳輸工作。

Struts的擴展性非常好,它部署的每一個類都是面向藉口的,它提供了一個應用程序可能用到的所有基礎類,如果應用還需要別的類,你可以自己去主動的添加,這就是面向接口的好處。儘管struts提供了很多了功能,但是開發人員還是可以以他們自己的方式來開發。

4.總結

    基於已有的行業標準和設計模式,struts2可以幫助我們爲企業級開發創建一個可擴展的開發環境,如果我們只是要開發一個小的系統的話,我們完全可以採用JSP Model1開發模式;如果我們要開發的是一個更加複雜的系統,包含很多的頁面,並且可能要運行很久的話,使用Struts是一個不錯的選擇,^_^。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章