* 令牌拦截器
1.
* 在add.jsp页面中,增加<s:token></s:token>隐藏域
2.
* 在struts.xml文件中,增加以下配置:<interceptors>
<interceptor-stack name="newStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" >
<param name="includeMethods">save</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
3.
* 在struts.xml文件中,增加一个result结果类型<result name="invalid.token">/user/error.jsp</result>
4.
* 在error.jsp页面中,增加一个错误提示标签:<s:actionerror />
5.
* 把错误提示信息修改成中文:* 在与动作类action同级目录下,创建一个名为"token.properties"资源文件
* 该资源文件配置如下:
struts.messages.invalid.token=\u8BF7\u4E0D\u8981\u91CD\u590D\u63D0\u4EA4\uFF01
//请不要重复提交!
加载自定义文件
<constant name="struts.custom.i18n.resources" value="com.zyk.action.fileupload,
com.zyk.action.token"></constant>
表单重复提交原因
1、
网页因网速慢引起的重复提交
2、
刷新提交
3、
打开两相同页面一起提交
4、
并发提交
5、浏览器后退引起的(后退没有清除session)
测试方法
1、
重复点击
2、
设置网络带宽速度来限制
3、LR并发测试
4、提交时刷新
5、浏览器后退
解决办法
1、
服务器端对表单做判断,如果传递两个完全一样的表单参数,服务器就会拒绝第二条消息,只记录一条
2、数据库中做唯一限制
3、提交后把提交按钮设置成不可用
4、提交后把
button改为正在提交,提交后增加个中间页面