Struts2最新版(2.5.12)快速入門(三) Struts2之Annotation
隨著版本不斷的更新,struts2也引進了Annotation的功能,這一改進使得我們的開發效率大大提高,再也不用去配置繁瑣的xml,可以更直觀明瞭的在我們處理業務邏輯的方法,或者Action類前面新增Annotation來實現請求對映、攔截、result等功能,其本質和xml區別並不是很大的。
1、配置Annotation之前我們需要新增 struts2-convention-plugin-2.5.12 jar包,如果我們這是maven專案,需要在 pom.xml中新增如下jar包依賴。
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-convention-plugin</artifactId>
<version>2.5.12</version>
</dependency>
2、Struts2使用Annotation開發需要遵循一些規範:
1、Action要必須繼承ActionSupport父類
2、Action所在的包名必須以 .action 結尾
3、action中常用的Annotation:
1、 @ParentPackage:對應xml配置檔案中的package的父包,一般需要繼承struts-default
2、 @Namespace:對應配置檔案中的nameSpace,名稱空間
3、 @Action,這個Annotation對應<action>節點(寫在方法前面)
常用屬性屬性:
value():表示action的請求名稱,對應<action>節點中的name屬性
results():表示action的多個result;這個屬性是一個數組屬性,因此可以定義多個Result
interceptorRefs():表示action的多個攔截器。這個屬性也是一個數組屬性,因此可以定義多個攔截器;
exceptionMappings():這是異常屬性,它是一個ExceptionMapping的陣列屬性,表示action的異常,在使用時必須引用相應的攔截器
4、@Action中results屬性中單個result Annotation的配置:
@Result這個註解對應了<result>節點。這個註解應用於 @Action中results()屬性中
常用屬性屬性:
name():表示action方法的返回值,對應<result>節點的name屬性,預設是success
location():表示View層檔案的位置(<result>對應於此</result>)
type():是result的型別,對應<result>節點的type屬性,預設是dispatcher
例如:(action跳action)
在位址列輸入 login或login.action控制檯會列印 login、register。
package com.example.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
public class LoginAction {
@Action(
value="login",
results={ @Result(name="login",location="register",type="chain")}
)
public String login(){
System.out.println("login");
return "login";
}
@Action(
value="register",
results={ @Result(name="success",location="/index.jsp")}
)
public String register(){
System.out.println("register");
return "success";
}
}
這個例子還是比較容易理解的,我就不過多的解釋啦,需要跳jsp或者其他View層檔案的話,只需要把location的屬性值改為View層檔案的地址即可絕對地址、相對地址都可以
注意:如果使用Annotation來訪問我們的action,那麼我們的Action類所在的包名,最後一個包的包名必須是以action結尾的。如com.example.action否則struts2會訪問不到的,這也是struts2比較蛋疼的地方之一吧。第一次老夫就是被它坑了!