struts2表单重复提交问题
来源:互联网 发布:本地文件同步软件 编辑:程序博客网 时间:2024/06/05 05:39
struts2重复提交
我们先来说一下什么是重复提交:所谓重复提交,就是用户在页面多次点击提交按钮,或者通过不断刷新页面,把已经提交过的数据多次向后台提交。
重复提交对于查询类的功能,问题还不是太大,但是对于新增或是修改类的功能,就有可能凭空的出现很多同样信息的重复数据,从而导致业务功能出现错误。
一、造成重复提交主要的两个原因:
在我们平时的开发过程中,经常可以遇到表单重复提交的问题,比如我们在做提交页面的时候,如果表单重复提交,那么一个用户就会多次的提交信息,造成重复提交,重复提交主要由于两种原因。
1、一种是 服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器没有及时响应,或者是网络原因,我们再次点击“提 交”按钮,这样我们就会在服务器端接受两条提交的数据,造成数据的重复提交。如果信息需要存储到后台数据库中,如此以来就会产生数据库操作异常提示信息,从而导致业务功能出现错误,从而给用户的使用带来不便,用户体验度不是很好。
2、另一种就是forward跳转引起的重复提交。在页面跳转的时候,有两种类型:请求转发和重定向,请求转发是在服务器端进行跳转,此时浏览器中的地址不会发生改变,重定向是在客户端发生跳转,跳转时候浏览器中的地址栏会发生改变,如果我们在提交表单时,使用了请求转发,那么当我们刷新页面时,访问的地址还是原来的地址,这样呢我们就会在一次的访问之前的地址,这样就会引起表单的重复提交。
二、解决方案
方案一、使用struts2中的拦截器
1)使用token
<package name=" interceptor0" namespace="/interceptor" extends="struts-default">
<action name="interceptor1" class="com.baidu.com.interceptor0">
<interceptor-ref name="defaultStack" />
<!--使用token拦截器-->
<interceptor-ref name="token" />
<!--拦截到后的输出界面-->
<result name="invalid.token">/index.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
2)使用tokenSession
<action name="interceptor2" class="com.baidu.com.interceptor0">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="tokenSession" />
<result name="success">/welcome.jsp</result>
</action>
方案二:使用重定向
在struts2中,struts.xml的result标签默认是转发(dispatcher),请求转发当我们再次提交时地址栏不变,所以我们就要用到重定向来解决问题。我们需要将struts.xml的result标签设置成(redirectAction),这样就不会再次重复的提交数据,造成数据的重复提交。
- struts2表单重复提交问题
- struts2表单重复提交问题
- struts2防止表单重复提交问题
- Struts2解决表单重复提交的问题
- struts2表单重复提交
- 表单重复提交问题
- 表单重复提交问题
- Struts2防止表单重复提交
- Struts2防止表单重复提交
- Struts2防止表单重复提交
- struts2防止表单重复提交
- Struts2防止表单重复提交
- Struts2解决表单重复提交
- Struts2处理表单重复提交
- Struts2防止表单重复提交
- Struts2防止表单重复提交
- Struts2防止表单重复提交
- Struts2防止表单重复提交 .
- 工作后,我该如何学习?
- 301跳转.htaccess 详解以及 .htaccess 参数说明
- 大数据应用
- NSIS x64 位系统下安装
- 针对复制东西Eclipse或者MyEclipse中出现cannot paste the clipboard contents into the selected elements报错问题
- struts2表单重复提交问题
- 冒泡算法
- 11 enum 枚举
- Qt中文乱码终极解决办法
- Linux应用操作感悟
- 跳槽搞懂这些,就不怕被放鸽子!
- 开源APP | Growth 2.0
- Building for UN
- H5游戏引擎为什么选择egret和怎么学习egret