寫在前面的話:對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是一個不錯的選擇,^_^。
本文轉自 646676684 51CTO部落格,原文連結:http://blog.51cto.com/2402766/569994,如需轉載請自行聯系原作者