Struts2 防止重复提交

struts2 使用拦截器来检查表单是否重复提交,它采用同步令牌的方式来实现对表单重复提交的判断。

首先需要在表单中使用 <s:token name="user.token"></s:token>

<s:token> 标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到 session 中。而这个令牌值是随即产生的经过加密的字符序列,不会重复。

其次需要为 action 配置 TokenInterceptor 或者 TokenSessionStoreInterceptor 拦截器。这两个拦截器都已经在 struts-default.xml 中定义,但没有包含在 defaultStack 拦截器栈中。

一個簡單的例子:

< action name = "register" class = "com.xxx.xxx.RegisterAction" >

      <!-- 配置异常映射,当 RegisterAction 抛出 Exception 异常时,向用户显示 error.jsp 页面 -->

      < exception-mapping result = "error" exception = "java.lang.Exception" />

      < result name="invalid.token">/WEB-INF/pages/register.jsp</result>

      < result name = "input" > /WEB-INF/pages/register.jsp </ result >

      < result name = "success" > /WEB-INF/pages/success.jsp </ result >

      < result name = "error" > /WEB-INF/pages/error.jsp </ result >

      < interceptor-ref name = "defaultStack" >

       < param name = "workflow.excludeMethods" > default </ param >

      </ interceptor-ref >

      <interceptor-ref name="token">

         <param name="excludeMethods">default</param>

      </interceptor-ref>

    </ action >

注: excludeMethods 指定要排除的方法。

在 register.jsp 页面中添加 action 级别的错误信息显示的标签: < s:actionerror />

在 form 中添加 <s:token> 标签: <s:token name="user.token"></s:token>

最好为在资源文件中设置键 struts.messages.invalid.token 的本地化消息。比如:struts.messages.invalid.token= 您已经提交了表单,请不要重复提交。

 

參考來源:http://www.iteye.com/topic/243196

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值