欢迎使用CSDN-markdown编辑器

来源:互联网 发布:宋孝宗 知乎 编辑:程序博客网 时间:2024/06/04 18:53

关于javaWeb中防止表单重复提交的方法

目前个人所知的有两种方法吧:

  • 处理数据后重定向
  • 使用struts2自带的token拦截器

方式一:

<action name="token_*" class="token_inter.employeeAction"   method="{1}">    <result name="success">list.jsp</result>    <result name="addsuccess" ype="redirectAction">token_list</result></action>

利用重定向来防止表单重复提交的方法。

二:使用struts2自带的token拦截器
1.要提交的表单中使用Struts的标签
<s:token></s:token>
那么会产生如下的效果:

<input type="hidden" name="token" value="ND9EORBIAR7WXFJ0DOWF0BPS5W26GQS3"><input type="hidden" name="struts.token.name" value="token">

可以看到 表单中多了这两行代码。
2.在struts.xml中使用拦截器
代码如下:

<action name="token_*" class="token_inter.employeeAction"            method="{1}">    <interceptor-ref name="defaultStack"></interceptor-ref>    <interceptor-ref name="token">    <-- 配置对那个方法进行防重复拦截 -->        <param name="includeMethods">add</param>    </interceptor-ref>        <result name="success">list.jsp</result>        <result name="addsuccess" type="redirectAction">token_list</result></action>

如此即可防止重提提交。

原理解析:
<s:token>标签生成的HTML标签来看和token的源码来看,可以看出原理为JSP与action各生成一个相同的ID,之后进行配对,若配对成功则成功提交并且删除action上的ID来达到效果的。

0 0