1. 程式人生 > >struts2中的Action介面和Actionsupport介面的作用

struts2中的Action介面和Actionsupport介面的作用

Struts 2的Action無須實現任何介面或繼承任何型別,普通的POJO類就可以用做Action類,

但是,我們為了方便實現Action,大多數情況下都會繼承com.opensymphony.xwork2.ActionSupport類,並重載(Override)此類裡的String execute()方法,因為ActionSupport已經實現了Action介面,還實現了Validateable介面,提供了資料校驗功能。通過繼承該ActionSupport類,可以簡化Struts 2的Action開發。

Action 跟 Actionsupport 的區別:
當我們在寫action的時候,可以實現Action介面,也可以繼承Actionsupport這個類.到底這兩個有什麼區別呢? 

Action介面有: 
public static final java.lang.String SUCCESS = "success"; 
public static final java.lang.String NONE = "none"; 
public static final java.lang.String ERROR = "error"; 
public static final java.lang.String INPUT = "input"; 
public static final java.lang.String LOGIN = "login"; 
public abstract java.lang.String execute() throws java.lang.Exception; 

而Actionsupport這個工具類在實現了Action介面的基礎上還定義了一個validate()方法,重寫該方法,它會在execute()方法之前執行,如校驗失敗,會轉入input處,必須在配置該Action時配置input屬性。 


另外,Actionsupport還提供了一個getText(String key)方法還實現國際化,該方法從資原始檔上獲取國際化資訊. 
這樣在自定義標籤時可以定義一個變數為new actionsupport物件實現國際化。

ActionSupport類的作用 
       struts2不要求我們自己設計的action類繼承任何的struts基類或struts介面,但是我們為了方便實現我們自己的action,大多數情況下都會繼承com.opensymphony.xwork2.ActionSupport類,並重寫此類裡的public String execute() throws Exception方法。因為此類中實現了很多的實用介面,提供了很多預設方法,這些預設方法包括國際化資訊的方法、預設的處理使用者請求的方法等,這樣可以大大的簡化Acion的開發。 


      Struts2中通常直接使用Action來封裝HTTP請求引數,因此,Action類裡還應該包含與請求引數對應的屬性,並且為屬性提供對應的getter和setter方法。

*****************************************************************************************************************

Action是一個介面
ActionSupport是實現了Action介面
實際開發中是繼承ActionSupport這是因為ActionSupport類裡給我實現了很多的方法,我們可以直接拿過來用          

*****************************************************************************************************************

這個其實沒有什麼特別的要求的,ActionSupport是Action下延伸出來的類,它是Action的子類,Actionsupport這個工具類在實現了Action介面的基礎上還定義了一個validate()方法,重寫該方法,它會在execute()方法之前執行,如校驗失敗,會轉入input處,必須在配置該Action時配置input屬性。 

另外,Actionsupport還提供了一個getText(String key)方法還實現國際化,該方法從資原始檔上獲取國際化資訊. 
這樣在自定義標籤時可以定義一個變數為new actionsupport物件實現國際化。