Struts2之路


struts2是一個web框架,框架提高了程序的規範的同時,也約束了程序員的自由

爲什麼會有struts2?
因爲我們對mvc的理解不同,可能造成不同公司寫程序的時候,規範不統一,這樣不利於程序的維護和擴展/效率/可讀性...所以我們有必要用一個統一的規範來開發項目->框架

struts2具有以下的優點:
1>在軟件設計的時候struts2並不像struts1那樣和servletAPI和strutsAPI有着緊密的聯繫,struts2開發的應用可以完全不依賴這兩個API。(struts2屬於無侵入設計,struts1屬於侵入式設計)
2>它提供了攔截器,利用攔截器可以進行AOP編程,實現如權限攔截等功能
3>它提供了類型轉換器,可以把特殊的請求參數轉化成需要的類型(如果是struts1,就必須向struts1底層實現BeanUtil註冊類型轉化器才行)
4>它提供了支持多種表現層技術(JSP、freeMarker、 Velocity等)
5>它的輸入校驗可以對指定方法進行校驗,解決struts1長久之痛
6>提供了全局範圍、包範圍和Action範圍的國際化資源文件管理實現


struts2框架使用包來管理Action,包的作用和java中的類包很相似,主要用於管理一組業務功能相關的action。實際應用時,我們最好把業務相關的action放在同一個包下

配置包時必須制定name屬性,該name屬性可以任意取名,但必須唯一,他不對應java的類包,如果其他包要繼承該包,必須通過該屬性進行引用。包的namespace屬性用於定義該包的命名空間,命名空間作爲訪問該包底下action的路徑的一部分(該屬性可以不配置,若不配置,則默認爲空字符串)

通常每個包都要繼承struts-default包,因爲Struts2很多核心的功能都是通過攔截器來實現

動作主要有三個作用:
1>給請求封裝需要做的實際工作
2>作爲請求到視圖這個過程中的數據攜帶者
3>幫助框架決定結果應該呈現請求響應的視圖

Struts2動作不必實現Action接口。任何對象都可以通過實現一個返回控制字符串的execute()方法來非正式地實現框架之間的契約

struts2提供了很多結果類型。常用的有:dispatcher(這個是默認的,內部請求轉發)、redirect(重定向到某個路徑)、redirectAction(重定向到某個Action)、plainText(原樣輸出代碼).

全局視圖:同一個包下的都可以訪問。如果希望所有包都可以訪問全局視圖的話,就將全局視圖定義到一個單獨的包中,然後讓所有的包都繼承該包

當數據經常發生變化是可以通過依賴注入到xml文件中
<action name="list" class="cn.itcast.action.HelloWorldAction" method="execute">
<param name="savepath">/images</param>
<result name="success">/WEB-INF/page/message.jsp</result>
 </action>

設置需要struts2處理的請求後綴
<constantname="struts.action.extension"value="do"/>


動態方法調用和使用通配符定義action




接收請求參數


struts2有兩種類型轉換器
局部
全局

在struts2中,可以實現對action的所有方法進行校驗或者對action的指定方法進行校驗

對於輸入校驗struts2提供了兩種實現方法:
1、採用手工編寫代碼實現
2、基於xml配置方式實現


















































































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