一 什么是表单的重复提交
1 多次点击提交按钮
2 表单提交后转发到一个页面 刷新这个页面
3 表单提交后转发到一个页面 按浏览器的返回按钮 再提交表单
二 struts2解决表单重复提交
用到一个标签和一个拦截器
<s:token></s:token> 标签必须在form表单的表体内
需要用到的拦截器 是 token 或者tokenSession 这两个拦截器没有在defaultStack中 所以需要我们重新配置下
在struts.xml中配置<interceptor-ref name="tokenSession"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
解决的原理是 s:token 标签会自动生成一个隐藏域和在session中放置一个和隐藏域一样的值 提交到action中会根据隐藏域的值和session中的值是否一致 如果一致的话则进行 操作并将session中的值清空 如果不一致则不进行操作
token 和tokenSession的区别
token 需要指定result name ="invalid.token"
tokenSession 则不需要