我想知道哈,大伙们你在做应用程序的时候,遇到防止数据的重复提交。是如何处理的。你们能简单介绍哈自己是如何实现的嘛?谢谢!
今天都没有人回答。我想我也是无理取闹了,因为这类似的问题解决思路都是一样的。肯定在客户端去判断是不科学的,也完全没有效果的,所以必须在服务器里面进行判断。所以在开始的时候就不需设置标识符,在页面里面设置隐含值,在进行校对。
恩我还是不用自己去实现,那有点累赘,在webwork啊,stuts1和struts2里面都有相应的方法给我们采用。我就不一一去叙述了。贴一些网上的代码ok:
A、webwork:1.定义你自己的拦截器栈:
<interceptors>
<interceptor-stack name="submitToken">
<interceptor-ref name="token-session"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
2.在需要防止重复提交的action里添加刚刚定义的拦截器栈,像这样:
<action name="sendMessage" class="net.jbbs.webwork.MessageAction" method="send">
<result name="success" type="dispatcher">
<param name="location">getMessagesList.action?type=sendbox</param>
</result>
<result name="fail" type="dispatcher">
<param name="location">sendMessage.jsp</param>
</result>
<result name="invalid.token" type="dispatcher">
<param name="location">sendMessage.jsp</param>
</result>
<interceptor-ref name="submitToken"/>
</action>
3.修改相应的包含提交表单的jsp文件,在这里是sendMessage.jsp:
<ww:token name="sendMessageToken"/>
B、struts1:
1、在跳转新增页面的时候执行的action方法中其中写入代码:saveToken(request);
2、写入数据提交表单的action,作如下处理
if(!isTokenValid(request, true)){
resetToken(request);
System.out.println("不能重复提交");
}else{
saveToken(request);
System.out.println("能提交");
}
C、struts2:
1.加入<s:token>标签
在<s:form ...></s:form>中加入
<s:token></s:token>
或
<s:token name="hello"></s:token>
将会生成
<input type="hidden" name="struts.token.name" value="hello">
<input type="hidden" name="hello" value="DBFIPUA0IFVGS9..." />
2.加入拦截器
在struts.xml中的action中加入token拦截器
<interceptor-ref name="token"></interceptor>
<interceptor-ref name="defaultStack"></interceptor>
3.配置 结果页面
在struts.xml的action中加入result,name为invalid.token
<result name="invalid.token">/registor.jsp</result>
4.显示出错信息
<s:actionerror cssStyle="color:red"/>
5.修改默认的出错信息
默认信息在struts-messages.properties中
struts.messages.invalid.token="The form ..."
在自定义的message_zh_CN.properties中替换
struts.messages.invalid.token=请不要重复提交表单
分享到:
相关推荐
在IT行业中,尤其是在Web开发领域,防止用户多次重复提交数据是一项重要的任务,这可以避免数据库出现冗余数据,保持系统稳定。"修改禁止多次重复提交"这个话题涉及到前端交互、后端处理以及数据库操作等多个层面。...
Spring MVC 防止数据重复提交的方法 Spring MVC 防止数据重复提交的方法是使用 Token 机制来实现的,该机制通过在服务器端生成一个随机的 UUID,并将其存储在 Session 中,然后在客户端提交数据时带上该 UUID,...
在Web应用开发中,为了避免用户因网络延迟或误操作而导致的数据重复提交问题,通常会采取一定的措施来确保数据的一致性和完整性。本篇文章将详细探讨如何通过AJAX技术结合JavaScript来实现按钮的防重复提交功能。 #...
Spring Boot 防止重复提交是指在用户提交表单或请求时,防止同一客户端在短时间内对同一 URL 的重复提交,从而避免服务器端的处理压力和数据的一致性问题。下面将详细介绍 Spring Boot 防止重复提交实现方法的相关...
为了解决这个问题,开发者需要确保表单只提交一次,防止不必要的数据重复处理或者服务器的重复计算。下面详细解释几种防止Layui表单重复提交的方法。 首先,在HTML表单中,为了避免在提交时页面刷新导致的重复提交...
在Web开发中,用户在提交表单后可能会意外地点击浏览器的刷新或后退按钮,导致数据重复提交,这在数据库操作中可能引起严重问题,比如财务交易的重复扣款或者用户信息的重复录入。针对这个问题,我们可以采取多种...
在ASP.NET开发中,页面重复提交是一个常见的问题,它可能导致数据冗余或一致性错误。防止重复提交对于确保数据的准确性和应用的稳定性至关重要。本文将深入探讨如何在ASP.NET环境中解决这个问题。 首先,理解问题的...
在现代Web应用开发中,防止表单重复提交是一项重要的任务,因为这可能导致数据不一致性和服务器资源浪费。本文将深入探讨如何使用Spring Boot 2.1、Redis和拦截器来实现这一功能。以下是对这个主题的详细解释: ...
二、防止数据重复提交的常见方法 防止数据的重复或恶意提交,最常见的处理方法有以下几种: 1. 通过 AJAX 技术,防止页面刷新处理。 2. 要求用户输入随机生成的验证码。 3. 利用 SQL 语句来防止数据的重复提交。 4...
在使用***进行网页开发时,常常会遇到表单提交后的刷新操作导致数据重复提交的问题。这种现象也被称为“刷新重复提交”。解决这个问题的方法可以分为两大类:一类是不保存缓存,另一类是保存缓存但通过特定机制避免...
在Java Web开发中,防止重复提交是一个重要的议题,尤其是在大型分布式应用中,因为这可能导致服务器资源的过度消耗,甚至引发系统性能问题。以下是一些防止重复提交的常见策略和技术: 1. **令牌(Token)机制**:...
App中,有很大一部分场景是点击按钮,向服务端提交数据,由于网络请求需要时间,用户很可能会多次点击,造成数据重复提交,造成各种莫名其妙的问题。 因此,防止按钮多次点击,是Android开发中一个很重要的技术手段...
在IT行业中,尤其是在前端开发领域,防止用户重复提交是一项重要的任务,这有助于避免因网络延迟或用户误操作导致的数据混乱。Element-UI,一个流行的Vue.js组件库,提供了多种方式来处理这个问题。以下是如何在使用...
这种情况下,如果没有采取适当的措施来防止重复提交,可能会引起数据冗余、资源浪费甚至业务逻辑错误等问题。因此,在实际项目开发中,防止重复提交是一项非常重要的工作。 #### 防止重复提交的方法 1. **前端控制*...
重复提交可能导致数据不一致,影响系统的稳定性和数据的准确性。本示例"防止页面重复提交demo"将介绍一种结合前端控制与后台session存储随机token的方法来解决这个问题。 首先,我们要理解页面重复提交可能产生的...
这种方式可以有效地避免重复提交,但对于需要保留用户输入数据的场景不太适用。 除此之外,本文介绍了一种更加灵活且用户体验更好的方法——利用隐藏字段(Hidden Field)配合会话状态(Session State)来判断当前...
这是因为用户可以快速点击按钮,导致多次提交数据,从而导致数据重复提交的问题。 解决方法 解决该问题的方法是通过控制按钮的禁用状态来实现。具体来说,可以通过绑定按钮的 disabled 属性来控制按钮的点击和不可...
在ASP.NET web应用程序中,"刷新重复提交"是一个常见的问题,它发生在用户点击浏览器...总的来说,理解和掌握防止ASP.NET刷新重复提交的方法对于构建健壮的Web应用至关重要,因为它直接关系到数据的安全性和用户体验。
服务器端避免表单的重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...