一共2步:
首先,在要避免重复提交的表单中,加struts2标签 这句
<s:token></s:token>
只要是用来验证是否重复提交的,当加载进页面时,标签会生成一个唯一的隐藏字段,内容如下:
<input type="hidden" name="struts.token" value="FRD7878YJFTR574454HHHKOKJ" />
然后配置struts-xxx.xml
eg:
<package name="XXX" namespace="/xxx" extends="struts-default">
<action name="xxx_add" method="add"
class="com.xxx.action.xxxAction">
<interceptor-ref name="defaultStack"/>//这句是默认的拦截器,有时不加会异常
<interceptor-ref name="token"/>//这句是防表单提交的token拦截器,用来判断是否重复提交的
<result name="invalid.token">/xxx/noback.jsp</result>//这句是如果有表单重复提交,就请求转发到重复提交信息页面
</action>
<action name="xxx_getById" method="getById"
class="com.xxx.action.xxxAction">
<result name="getById">/xxx/xxx_getById.jsp</result>
</action>
</package>
说明:struts-xxx.xml配置时,token拦截器,一定要根据需要加入响应的action中,不要全部action都加,我曾经遇到过,把全部action都加了,以为反正不影响什么,但是却出现错误了,在查询的时候,直接请求转发到重复提交信息页面,浪费了我好多时间。所以要根据需求及需要的加,上面我列出了2个action就是为了说明这个道理的,不需要的不加。当然也可以定义成全局的,需要时直接引用,这样的做法很好,在这里就不例举了~