Struts2利用token和tokenSession攔截器防止重復提交


  有時候網絡響應慢,用戶可能會再次點擊提交按鈕,或者在保存頁面refresh 也會造成重復提交,這樣會造成數據庫中有多條相同的數據;

我們當然可以利用js來控制,但是如果瀏覽器禁用了JS,那就不能控制了。

  Struts2中設計了token和tokenSession攔截器來攔截重復提交:

  jsp頁面:

1 <@ taglib prefix="s" uri="/struts-tags" /> 
2  
3 <s:form action="testToken" namespace="/" method="post">
4     <s:token></s:token><!--表單中插入token標簽-->
5     <s:textfield name="userName" label="Username"/>
6     <s:submit></s:submit>
7 </s:form>

  struts.xml配置:

<action ="testToken" class="com.test.UserAction">
        <interceptor-ref name="defaultStack"></interceptor-ref>
           <interceptor-ref name="token"></interceptor-ref>
        <result>/success.jsp</result>
        <result name="invalid.token">/error.jsp?message=重復提交         </result><!--配置name為invalid.token的result 重復提交時跳轉到此頁面--->
</action>    

  Action.java:

 1 public class UserAction extends ActionSupport{//一定要繼承ActionSupport
 2            private String userName;
 3            public void execute(){
 4                 return "success";
 5             }
 6            public void setUserName(String userName) {
 7              this.userName = userName;
 8           }
 9          public String getUserName() {
10             return userName;
11           }
12 }

    如果利用tokenSession,重復提交時將不會跳轉

  配置只需把xml文件中token改為tokenSession 並且去掉invalid.token的result即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM