`
eric.song
  • 浏览: 12310 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

怎样防止页面被重覆提交

    博客分类:
  • java
阅读更多

     今天在和同事调试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环境中解决这个问题。 首先,理解问题的...

    ASP.NET中防止刷新页面造成表单重复提交

    ### ASP.NET中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...

    防止页面的重复提交和刷新

    ### 防止页面的重复提交和刷新 #### 一、引言 在现代Web应用开发过程中,确保数据完整性与用户体验至关重要。其中,“防止页面的重复提交和刷新”这一问题尤为关键,它不仅关系到系统的稳定性,还直接影响用户体验...

    防止页面重复提交demo

    在网页应用中,防止页面重复提交是一个重要的安全性与用户体验问题。重复提交可能导致数据不一致,影响系统的稳定性和数据的准确性。本示例"防止页面重复提交demo"将介绍一种结合前端控制与后台session存储随机token...

    防止Layui form表单重复提交的实现方法

    总之,防止Layui表单重复提交的关键在于阻止表单的默认提交行为,并且在数据成功发送到服务器后,确保表单不会再次被提交。这不仅涉及到对Layui框架的熟悉,还需要对前端JavaScript和AJAX有深入的理解。通过上述方法...

    [Jsp]防止页面表单重复提交的解决方法

    本篇文章将探讨如何有效地防止JSP页面中的表单重复提交,确保系统的稳定性和数据的准确性。 一、理解表单重复提交的问题 当用户点击提交按钮后,由于网络延迟或浏览器刷新等原因,可能导致同一份表单数据多次发送...

    struts token 防止页面刷新,重复提交

    ### Struts Token机制防止页面刷新及重复提交 在Web应用开发过程中,特别是在使用MVC框架如Apache Struts进行开发时,防止表单重复提交是一个重要的安全措施。表单重复提交通常发生在用户点击“提交”按钮后,由于...

    javascript控制页面重复提交

    在网页开发中,防止用户意外...通过以上三种方式,我们可以有效地防止页面的重复提交。这些技术可以单独使用,也可以结合使用,以提供更健壮的用户体验。在实际开发中,应根据项目需求和用户交互习惯选择最适合的方法。

    javascript方式防止表单重复提交

    8. **表单重定向(Redirect after Post)**:这是一种经典的防止重复提交的方法,提交表单后立即重定向到新的URL,这样即使用户再次点击提交,也会被重定向页面拦截。 9. **使用HTML5的formnovalidate属性**:对于...

    element-ui如何防止重复提交的方法步骤

    在IT行业中,尤其是在前端开发领域,防止用户重复提交是一项重要的任务,这有助于避免因网络延迟或用户误操作导致的数据混乱。Element-UI,一个流行的Vue.js组件库,提供了多种方式来处理这个问题。以下是如何在使用...

    防止表单重复提交(asp.net )

    为了确保用户在提交表单时不会无意或有意地多次发送请求,我们需要实施有效的防止表单重复提交的策略。以下是一些关键知识点: 1. **表单重复提交的类型**: - **用户行为**:用户可能意外按下刷新按钮,导致已...

    Struts2防止重复提交解决方案

    在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...

    防止用户刷新,重复提交数据

    在Web开发中,防止用户刷新页面而导致重复提交数据是一个重要的问题。这通常涉及到表单提交、支付确认等关键操作,确保这些操作仅执行一次是非常必要的。本资源提供了一个解决方案,通过使用“Token”机制来避免这种...

    java实现防止表单重复提交

    服务器端避免表单的重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...

    自定义标签 防止重复提交

    本文将深入探讨自定义标签在防止重复提交中的实现原理和应用。 首先,我们要理解什么是自定义标签(Custom Tags)。在JavaServer Pages(JSP)中,自定义标签是扩展JSP功能的一种方式,它可以封装复杂的业务逻辑...

    ajax 防止按钮重复提交

    ### AJAX 防止按钮重复提交 在Web应用开发中,为了避免用户因网络延迟或误操作而导致的数据重复提交问题,通常会采取一定的措施来确保数据的一致性和完整性。本篇文章将详细探讨如何通过AJAX技术结合JavaScript来...

    sturts2防止表单的重复提交 token

    在Web开发中,防止表单重复提交是一个常见的需求,尤其是在处理敏感数据或者执行不可逆操作时。Struts2为解决这个问题引入了Token机制,确保每个表单提交只被处理一次,避免了由于用户意外刷新页面导致的重复请求。 ...

    通过xml配置搞定Struts重复提交问题

    在Struts的配置文件(例如`struts.xml`)中,为需要防止重复提交的Action添加一个拦截器栈,包括`token`和`tokenSession`拦截器。 ```xml &lt;!-- 配置错误结果页面 --&gt; &lt;param name="includeParams"&gt;none ...

Global site tag (gtag.js) - Google Analytics