struts2-註解&防止表單重複提交
阿新 • • 發佈:2018-12-06
註解:
- 註解沒有分號
- 註解首字母是大寫,因為註解與類、介面是同一級的。一個註解後臺對應一個@interface類
- 同一語法單元,同一註解只能使用一次
- 在註解與語法單元間可以隔若干空行、註釋等非程式碼內容
在struts2中使用註解,主要完成對Action的定義。但諸如常量定義、攔截器定義等還需要在struts.xml中完成。(需要引入struts2-convention-plugin-*.jar)
action基本註解示例:
@Namespace(value="/test")//對於xml中的namespace="/test"
@ParentPackage(value ="struts-default")//對於xml中的extends="struts-default"
public class loginAction {
private String user;
private String password;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Action(value="login",results={@Result(name="success",type="dispatcher",location="/welcome.jsp")})
//value對應action中name="login",results在這裡是@Result註解陣列,這個註解對應每個result,當type為重定向且攜帶資料時,後面可加params={"user","%{user}","password","%{password}"},
//會按照位址列傳值進行讀取,這裡的%{user}相當於在xml中賦值的${user}
public String execute(){
System.out.println("Struts demo");
return "success";
}
}
註解中,如果只有一個value值,可將value省略不寫只寫值。同時在xml中能省略的預設值在註解中也能省略。
對於全域性檢視註解:(action類頭部加註解)
@Results(value={@Result(name="",location=""),@Result(name="",location="")})
action中攔截器註解:
@ParentPackage("")//繼承定義攔截器的package
interceptorRefs={@InterceptorRef(value="permissionStack")}//@Action中加入該屬性值,類似results
預設攔截器註解:(action類頭部加註解)
@InterceptorRefs(@InterceptorRef(value=""))//相當於xml中預設攔截器
防止表單重複提交:
通過令牌(Token)機制防止表單重複提交
1、在表單頁面加入struts2標籤,通知struts2這個表單使用令牌機制。
<s:token/>
2、在xml中對應的action中註冊攔截器:(不是預設的,後面可通過註解實現)
<interceptor-ref name="token">
3、讓對應action繼承ActionSupport,並在action註冊中加入invali.token結果檢視
<result name="invalid.token">/loging.jsp</result>