struts2中使用token避免重复提交

1.在struts.xml中

<action name="register" class="org.sunxin.struts2.action.RegisterAction">
      <!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面-->
      <exception-mapping result="error" exception="java.lang.Exception"/>
      
      <result name="input">/pages/register.jsp</result>
      <result name="success">/pages/success.jsp</result>
      <result name="error">/pages/error.jsp</result>
      <result name="invalid.token">/pages/register.jsp</result>
      <result name="wait">wait.jsp</result>

   <interceptor-ref name="defaultStack"></interceptor-ref>
   <interceptor-ref name="token">
       <param name="excludeMethods">input</param>
      </interceptor-ref>
</action>
2.在页面中加
<s:actionerror/>
<s:form action="register" method="post">
    <s:token></s:token>
</s:form>
3.<interceptor-ref name="token"/> 
<interceptor-ref name="token-session"/>
<!--注意struts2.0 拦截器名字为token-session struts2.1.2 已经更改为tokenSession -->
token: 在活动中检查合法令牌(token), 防止表单的重复提交; 在<s:actionerror/>会产生提示信息
token-session: 同上, 但是在接到非法令牌时将提交的数据保存在session中; 不会在<s:actionerror/>会产生提示信息

只会在后台发出警告并处理,如下:
警告: Form token KO80SIJW4F84034NG5HM1ZBUGOVNY64D does not match the session token null.

posted @   jamin  阅读(886)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示