標籤:struts2 java 學習總結
除了使用設定檔配置之外,還可以使用註解來配置
下面是一些常用的註解
介紹:
@Action/@Actions:
@Action指定一個類為action,對應設定檔中的<action>....</action>標籤,其中可以配置如下屬性
- results:配置返回的結果集屬性,相當於struts2中的<result>列表,可以在{}中配置屬性,具體如下
- value:配置action的名字,相當於<action>中的name屬性
- interceptorRefs:配置攔截器
@Action可以定義在類上,也可以定義在方法上如下(@Result的作用後面講,也可以和後面的配合著看)
@Action(value = "testAction",results = {@Result(name="success",location="/success.jsp")})public class testAction extends ActionSupport {@Overridepublic String execute() throws Exception {return SUCCESS;}}這就相當於如下的xml配置
<action name="testAction" class="struts2.action.testAction"><result name="success">/success.jsp</result></action>
在xml配置中如果name不寫,那麼預設就是success,在註解中也是,如果results中的name不寫,那麼預設就是success
也可以使用@Actions來指定多個action映射,這樣可以做到一個類對應多個地址映射,如下
@Actions({@Action(value = "testAction",results = {@Result(location="/success.jsp")}),@Action(value = "testAction2",results = {@Result(location="/success.jsp")})})public class testAction extends ActionSupport {@Overridepublic String execute() throws Exception {return SUCCESS;}}這是使用/testAction或者/testAction2都可以跳轉到success.jsp上,因為配置了兩個action映射
在xml配置中,我們有如下的配置方法
<action name="*" class="struts2.action.testAction" method={1}><result name="{1}">/{1}.jsp</result></action>這是xml配置中的萬用字元方式,即當我們以add來訪問action時,將會進到action的add方法進行處理,當返回add時會跳轉到add.jsp頁面在註解中沒有萬用字元可以使用,但是也可以實作類別似的效果,這時@Action就要寫在方法上了,就像下面這樣
public class testAction extends ActionSupport {@Action(value = "add",results = {@Result(name="add",location="/add.jsp")})public String add() throws Exception {return "add";}@Action(value = "delete",results = {@Result(name="delete",location="/delete.jsp")})public String delete() throws Exception {return "delete";}}這樣便實現了上面的效果,這說明@Action也是可以在方法上聲明的(@Actions也可以在方法上聲明)
@Result/@Results:
@Result配置具體返回結果,在results中使用,也可以單獨在類上使用,有如下屬性
- name:對應<result>中的name屬性
- location:對應<result></result>間的地址
- type:對應<result>的type屬性
@Result可以在類上聲明,也可以和Action配置聲明,如果在類上聲明,那麼就是全域的結果,如下
@Result(name="delete",location = "/delete.jsp")public class testAction extends ActionSupport {@Action(value = "add", results = { @Result(name = "add", location = "/add.jsp") })public String add() throws Exception {return "add";}@Action(value = "delete")public String delete() throws Exception {return "delete";}}雖然delete方法沒有指定返回delete時要跳轉到哪個頁面頁面,但是在類上用@Result聲明了,那麼就會找到類上面的這個@Result,然後跳轉到delete.jsp頁面
@Results是用來聲明多個結果集,用法和@Actions類似,這裡就不再詳述
struts2註解總結[email protected]和@Result