struts2的防止表单重复提交的令牌机制

struts2 提供 令牌拦截器  TokenInterceptor 

主要作用 : 防止表单的重复提交

重复提交表单坏处: 投票系统刷票, 论坛重复注册(刷贴子) ----- 添加操作,重复向数据库插入数据

步骤

1、 在form中使用 <s:token>  作用: 生成随机UUID, 生成<inputhidden>元素, 将UUID 放入Session

 

2、 struts2内部 已经提供拦截器

          <interceptor name="token"class="org.apache.struts2.interceptor.TokenInterceptor"/>

作用:比较请求中令牌号 和 Session中令牌号是否一致,如果不一致请求无效,跳转invalid.token页面

         token拦截器不在 defaultStack,因此要在注册之前加上defaultStack拦截器,不然默认的拦截器      就不能用了

         <interceptor-refname="token">

             <!-- 配置token拦截器拦截哪些方法 -->

             <paramname="includeMethods">save</param>

     </interceptor-ref>

 

3、 在struts.xml 对Action 应用token拦截器

         <action name="regist"class="cn.itcast.action.RegistAction">

                            <result>/index.jsp</result>

                            <interceptor-ref name="defaultStack"></interceptor-ref>

                            <interceptor-refname="token"></interceptor-ref>

         </action>

 

4、 配置错误跳转页面

<resultname="invalid.token">/token_error.jsp</result>

在错误页面中 <s:actionerror> 去显示默认的提示信息

通过设置国际化文件 struts.messages.invalid.token=您已经重复提交表单,请刷新后重试---- 修改默认信息

该信息所在位置struts2-core-2.3.3.jar包下\org\apache\struts2\struts-messages.properties文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值