1. 程式人生 > >struts2-註解&防止表單重複提交

struts2-註解&防止表單重複提交

註解:

  • 註解沒有分號
  • 註解首字母是大寫,因為註解與類、介面是同一級的。一個註解後臺對應一個@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>