Struts2防止表單重複提交
1.說明
系統攔截器的應用。
表單重複提交:當使用請求轉化進行跳轉的時候,存在著表單重複提交的問題。
2.在表單中加入s:token
如果頁面加入了struts2的標籤,頁面的請求必須進入struts2的核心控制器。
s:token會被解析為隱藏域,隱藏域中的值是伺服器產生的一個token,當提交表單的時候,會將token的值提交到伺服器,struts2將客戶端提交的token和session中的token比較:
如果匹配,正常提交,執行處理請求的方法
如果不匹配,返回值指定的result,result的名字為invalid.token
<form action="userAction_userReg.action" method="post">
<s:token></s:token>
<div>
<input name="uname" type="text" />
</div>
<div>
<input name="upwd" type="text" />
</div>
<div>
<input type="submit" />
</div>
</form>
3. 定義Action
public class UserAction extends ActionSupport
{
// org.apache.struts2.interceptor.TokenInterceptor
private String uname;
private String upwd;
public String getUname()
{
return uname;
}
public void setUname(String uname)
{
this.uname = uname;
}
public String getUpwd()
{
return upwd;
}
public void setUpwd(String upwd)
{
this.upwd = upwd;
}
public String userReg()
{
System.out.println(uname + "\t" + upwd);
return Action.SUCCESS;
}
}
4. 配置Action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" namespace="/" extends="struts-default">
<interceptors>
<!-- 自定義攔截器棧 -->
<interceptor-stack name="mystack">
<interceptor-ref name="token"></interceptor-ref>
<!-- 引入系統預設的攔截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<action name="userAction_*" class="com.guangsoft.action.UserAction"
method="{1}">
<!-- 引用攔截器棧 -->
<interceptor-ref name="mystack"></interceptor-ref>
<result name="invalid.token">/index.jsp</result>
<result>/show.jsp</result>
</action>
</package>
</struts>
TokenSession:自己測試,不需要配置<result name="invalid.token">/index.jsp</result>
Invalid.token,預設在哪裡重新整理,停留在哪裡。
相關文章
- PHP 防止表單重複提交PHP
- PHP防止使用者重複提交表單PHP
- PHP透過session判斷防止表單重複提交例項PHPSession
- js 防止重複提交方案JS
- java 表單避免重複提交?Java
- jFinal避免表單重複提交
- 如何防止使用者重複提交訂單?(下)
- 如何防止使用者重複提交訂單?(上)
- 如何防止使用者重複提交訂單?(中)
- 前端如何防止介面重複提交前端
- 如何避免表單的重複提交?
- Spring MVC表單防重複提交SpringMVC
- SpringBoot如何防止重複提交?- Adrian AdendrataSpring Boot
- 前端防止使用者重複提交-js前端JS
- 防止點選enter回車提交表單
- 如何使POST請求具有冪等性防止重複提交 - mscharhag
- axios 重複提交iOS
- Java使用Redis實現分散式鎖來防止重複提交問題JavaRedis分散式
- 簡單介紹redis分散式鎖解決表單重複提交的問題Redis分散式
- 分散式重複提交分散式
- WEB安全新玩法 [8] 阻止訂單重複提交Web
- 提交表單
- WinForm MDIParent如何防止重複開啟ORM
- MQ 如何防止訊息重複入隊MQ
- form表單提交方式ORM
- vue+elementUI 複雜表單的驗證、資料提交方案VueUI
- 重複提交,你是如何處理的?
- MySQL防止重複插入相同記錄 insert if not existsMySql
- JavaWeb——驗證碼功能解決表單重複提交問題(使用谷歌驗證碼jar包為例)JavaWeb谷歌JAR
- 何為Redis單據鎖,你又是如何防止併發重複寫入的Redis
- js表單檔案提交JS
- Ajax 提交表單資料
- form表單提交注意事項ORM
- 對於防止按鈕重複點選的嘗試
- SpringMVC後臺token防重複提交解決方案SpringMVC
- C# Post 模擬表單提交C#
- 分散式重複提交問題架構設計思路分散式架構
- pbootcms提交留言、提交自定義表單時取消驗證碼boot