Struts2學習:Overview之Nutshell

 寫在前面的話:對Struts2的理解一直處於似懂非懂的狀態讓我非常苦悶,在使用的過程當中Struts2的強大已經讓我歎爲觀止,不知道這個用詞是否準確。爲了更好的理解Struts2,決定拜讀下官方的guide,順便作下翻譯,但願本身可以堅持下來,閱讀的過程當中確定有不少地方理解不了,可是仍是打算直接譯出來,也許一段時間之後再毒一遍的話就可以理解的更深入了。html

1.堅果殼中的apache struts2 體系java

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


它的具體流程以下:shell

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

2.堅果殼中的struts標籤apache

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是一個不錯的選擇,^_^。

相關文章
相關標籤/搜索