今天在和同事调试bug时,发现页面以post方式提交的数据,在刷新浏览器的时会重复提交。处理完这个问题后我写下了这篇文章。
我现在知道可以处理重复提交的方式有两种:
(1)使用Token值。类似于验证码的处理方式。用户在每次提交时由于Token值不同,就不会出现这个问题了:
public class TokenProcesser {
/**
* 在session中保存token值
* */
public synchronized static String saveTokenToSession(HttpSession session){
if(session ==null){
return null;
}
StringBuffer token=new StringBuffer();
for(int i=0;i< 10; i++){
Random ram=new Random();
token.append(String.valueOf(ram.nextInt(100)));
}
session.setAttribute("tokenvalue", token.toString());
return token.toString();
}
public static String getTokenStringInSession(HttpSession session){
if(session ==null){
return null;
}
return (String)session.getAttribute("tokenvalue");
}
/**
* 在session中删除tokenz值
*
* */
public synchronized static void removeTokenInSession(HttpSession session){
if(session ==null){
return;
}
session.removeAttribute("tokenvalue");
}
}
在方法中调用时,在渲染这个页面的方法时,生成Token值并保存到session中,而在处理Form提交的Action类里,在session获得此Token值。如果相等则程序继续,并调用上面的方法生成新的Token值保存到session中,否则结束程序,返回以前的页面。
(2)页面重定向
在Action中处理完post 表单提交数据后,用Get的方式重定向到原来的页面。这个要根据不同的MVC框架来决定具体的用法。我使用的是sofaMVC。
在sofa中,很简单:直接返回视图名称。例如:return “redirect:index.htm”
- 大小: 2.7 KB
分享到:
相关推荐
防止页面刷新重复提交的方法 防止页面刷新重复提交是 Web 开发中常见的问题,多次提交表单可能会导致不必要的数据重复录入、服务器压力增大等问题。下面我们将详细介绍防止页面刷新重复提交的方法。 一、验证码...
在ASP.NET开发中,页面重复提交是一个常见的问题,它可能导致数据冗余或一致性错误。防止重复提交对于确保数据的准确性和应用的稳定性至关重要。本文将深入探讨如何在ASP.NET环境中解决这个问题。 首先,理解问题的...
### ASP.NET中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...
### 防止页面的重复提交和刷新 #### 一、引言 在现代Web应用开发过程中,确保数据完整性与用户体验至关重要。其中,“防止页面的重复提交和刷新”这一问题尤为关键,它不仅关系到系统的稳定性,还直接影响用户体验...
在网页应用中,防止页面重复提交是一个重要的安全性与用户体验问题。重复提交可能导致数据不一致,影响系统的稳定性和数据的准确性。本示例"防止页面重复提交demo"将介绍一种结合前端控制与后台session存储随机token...
总之,防止Layui表单重复提交的关键在于阻止表单的默认提交行为,并且在数据成功发送到服务器后,确保表单不会再次被提交。这不仅涉及到对Layui框架的熟悉,还需要对前端JavaScript和AJAX有深入的理解。通过上述方法...
本篇文章将探讨如何有效地防止JSP页面中的表单重复提交,确保系统的稳定性和数据的准确性。 一、理解表单重复提交的问题 当用户点击提交按钮后,由于网络延迟或浏览器刷新等原因,可能导致同一份表单数据多次发送...
### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...
在网页开发中,防止用户意外...通过以上三种方式,我们可以有效地防止页面的重复提交。这些技术可以单独使用,也可以结合使用,以提供更健壮的用户体验。在实际开发中,应根据项目需求和用户交互习惯选择最适合的方法。
8. **表单重定向(Redirect after Post)**:这是一种经典的防止重复提交的方法,提交表单后立即重定向到新的URL,这样即使用户再次点击提交,也会被重定向页面拦截。 9. **使用HTML5的formnovalidate属性**:对于...
在IT行业中,尤其是在前端开发领域,防止用户重复提交是一项重要的任务,这有助于避免因网络延迟或用户误操作导致的数据混乱。Element-UI,一个流行的Vue.js组件库,提供了多种方式来处理这个问题。以下是如何在使用...
为了确保用户在提交表单时不会无意或有意地多次发送请求,我们需要实施有效的防止表单重复提交的策略。以下是一些关键知识点: 1. **表单重复提交的类型**: - **用户行为**:用户可能意外按下刷新按钮,导致已...
在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...
在Web开发中,防止用户刷新页面而导致重复提交数据是一个重要的问题。这通常涉及到表单提交、支付确认等关键操作,确保这些操作仅执行一次是非常必要的。本资源提供了一个解决方案,通过使用“Token”机制来避免这种...
服务器端避免表单的重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...
本文将深入探讨自定义标签在防止重复提交中的实现原理和应用。 首先,我们要理解什么是自定义标签(Custom Tags)。在JavaServer Pages(JSP)中,自定义标签是扩展JSP功能的一种方式,它可以封装复杂的业务逻辑...
### AJAX 防止按钮重复提交 在Web应用开发中,为了避免用户因网络延迟或误操作而导致的数据重复提交问题,通常会采取一定的措施来确保数据的一致性和完整性。本篇文章将详细探讨如何通过AJAX技术结合JavaScript来...
在Web开发中,防止表单重复提交是一个常见的需求,尤其是在处理敏感数据或者执行不可逆操作时。Struts2为解决这个问题引入了Token机制,确保每个表单提交只被处理一次,避免了由于用户意外刷新页面导致的重复请求。 ...
在Struts的配置文件(例如`struts.xml`)中,为需要防止重复提交的Action添加一个拦截器栈,包括`token`和`tokenSession`拦截器。 ```xml <!-- 配置错误结果页面 --> <param name="includeParams">none ...