`

JavaWeb开发中防止表单重复提交

阅读更多

第一种方式:

可以在客户端利用Javascript对表单重复提交作验证,主要实现手段是在这个表单触发表单提交事件的时候调用一个Javascript编写的函数,这个函数: 
<script> 
var isCommitted = false; 
function checkPost() 

if(!isCommitted) 

   isCommitted = true; 
   return true; 

else 

   alert("不能重复提交表单"); 
   return false; 


</script> 

<form action="servlet/RepeateFormServlet" method="POST" onsubmit="return checkPost()">... 

第二种方式:利用验证码 
  由于每次表单的提交都需要一个验证码这个验证码在服务器端是唯一的每次表单提交的验证码是不同的可以根据每次提交上来的验证码与服务器端的中的session中的验证码进行匹配 

第三种方式:利用一个时间令牌(可以使任意的令牌只要是唯一的就可以) 
产生这个唯一令牌 
如:<% 
      Date   nowDate =    new Date(); 
      String nowDateString  = new  Long(nowDate.getTime()).toString(); 
      session.setAttribute("tokenTime",nowDateString); 
%> 
通过一个表单隐藏的字段传递这个令牌 
<input type="hidden"  name="tokenTime" value="<%=nowDateString%>"> 

接下来在服务器端中的session中获取这个时间令牌然后与这个表单的隐藏字段进行比较 
相同则提交表单并且把这个session中的tokenTime删除 
session.setAttribute("tokenTime",nowDateString); 
反之.... 
第四种方式:基于Struct框架的解决方案 

Struct框架中提供了一个Token机制来解决表单的重复提交 
使用这个Token应注意: 

 JSP必须是通过一个Action进行转发并且在这个Action中调用saveToke(request); 
  这个方法向导向的JSP中保持一个唯一的Token 

然后在一个处理表单的Action中调用isTokenVaild(request,true)方法来验证这个表单是否被重复提交 

实现原理:当调用saveToken(request)时候服务器向JSP中输出一个唯一的Token服务器端也保存相同的一份当提交这个表单的时候调用isTokenValid(request,ture)进行校验后服务器又会生出一个新的Token发送给表单JSP中服务器端的Token不发送改变,当客户端再次提交这个表单的时候调用isTokenValid(request,ture)方法进行校验此时这个Token不一致则不会重复提交表单 

分享到:
评论

相关推荐

    JavaWeb开发中请求重复提交的解决方案及实现.pdf

    总的来说,JavaWeb开发中防止请求重复提交的策略包括客户端JavaScript验证、服务器端Session管理和使用一次性验证码。根据实际情况和安全需求,开发者可以选择适合的解决方案,确保系统的稳定性和数据的安全性。

    JavaWeb中HttpSession中表单的重复提交示例

    为了防止表单重复提交,开发者通常会在表单中添加一个唯一的标记,该标记在服务器端进行验证。以下是一种有效的解决方案: 1. 在用户首次访问表单页面时,服务器生成一个随机的唯一值(如UUID),并将这个值存储在...

    javaweb登入注册+答题系统 解决了反之用户重复登陆

    1. **Servlet**: Servlet是Java中用于处理HTTP请求的服务器端组件,是JavaWeb开发的核心部分。在登录注册系统中,Servlet接收用户的HTTP请求,验证用户的身份,处理注册和登录的业务逻辑,然后返回响应给客户端。 2...

    javaWeb验证登录密码强度

    综上所述,这个"mimajibie"项目涉及到JavaWeb开发中的多个关键知识点,包括Servlet与JSP的交互、密码强度验证的实现、前端与后端的通信以及项目的调试和测试。通过学习和实践这个项目,开发者能够深入理解JavaWeb...

    javaWeb 生成验证码程序

    JavaWeb验证码生成程序是Web开发中的一个重要组成部分,主要用于防止恶意自动化的机器人或脚本进行非法操作,例如批量注册、刷票等。在这个程序中,我们通常会遇到以下几个关键知识点: 1. **验证码类型**:验证码...

    javaweb实现登录注册功能

    在JavaWeb开发中,创建一个具备用户登录和注册功能的应用是一项基础且重要的任务。这个应用通常涉及前后端交互、数据库操作以及用户验证等核心模块。本项目以Servlet技术为基础,结合MySQL数据库和JSP页面,构建了一...

    javaWeb验证码

    在JavaWeb开发中,验证码(CAPTCHA)是一种用于防止恶意自动化程序(如机器人)进行非法操作的安全机制。它通常由一组随机生成的字符或数字组成,用户需要在短时间内正确输入这些字符才能完成某个操作,如注册、登录...

    基于javaweb的简易投票系统数据库文件.zip

    【标题】"基于javaweb的简易投票系统数据库文件.zip" 涉及到的知识点主要集中在JavaWeb开发和数据库管理上。JavaWeb是一种利用Java技术进行Web应用程序开发的方法,它包括Servlet、JSP(JavaServer Pages)、JSTL...

    基于Javaweb的问卷调查系统.zip

    提交过程通常涉及表单验证和防止重复提交。 3. **数据收集**:系统需要记录并存储用户的回答,可能需要设计合适的数据库表结构以存储复杂问卷数据。同时,考虑数据安全性和隐私保护。 4. **数据分析**:提供统计...

    Javaweb 登录页面自动跳转

    4. **URL重定向**:在登录成功后,为了防止表单重复提交,通常会使用URL重定向。重定向会更改浏览器的地址栏显示,用户可以刷新页面而不会再次触发登录请求。 5. **过滤器(Filter)**:在大型项目中,登录检查通常...

    javaweb登录注册页面完整代码

    在JavaWeb开发中,登录注册页面是任何应用程序的基础部分,它允许用户创建账户并安全地登录。本示例提供了一个简单的登录注册页面的代码结构,包括`index.jsp`、`LoginServlet`和`RegisterServlet`,以及错误和成功...

    javaweb投票统计模块源代码

    这个源代码包适合初级和中级的...通过学习这个投票统计模块的源代码,开发者可以提升自己在JavaWeb开发中的实践能力,包括数据库操作、用户交互处理、异常处理等多个方面,同时也能加深对MVC架构和其他相关技术的理解。

    JAVAWeb,实现分页展示,信息回显,登录验证

    在JAVAWeb开发中,实现分页展示、信息回显和登录验证是三个核心功能,对于构建用户友好的交互式Web应用程序至关重要。以下是这些知识点的详细解释: **分页展示** 分页是处理大数据集合时常用的一种策略,它可以...

    servlet+jsp+javabean+css+javascript

    这个项目显然基于MVC(Model-View-Controller)设计模式和三层架构思想,旨在创建一个用户注册系统,具备安全特性如防止表单重复提交和一次性验证码。 首先,MVC设计模式是一种软件设计模式,它将应用程序分为三个...

    javaweb的上传和下载

    在JavaWeb开发中,文件的上传和下载是常见的功能需求,尤其在构建用户交互丰富的Web应用时。这个“javaweb的上传和下载”练习项目旨在帮助开发者掌握这两个核心技能。下面将详细介绍JavaWeb中文件上传和下载的相关...

    java web电影票_javaweb_javaweb_电影票_

    `response.sendRedirect()`方法用于重定向,常用于外部跳转或防止表单重复提交。 7. **安全与权限控制**:系统应有基本的安全措施,如密码加密存储、防止SQL注入和跨站脚本攻击(XSS)。对于敏感操作,如修改用户...

    javaweb用户注销后点击浏览器返回刷新页面重复登录问题的解决方法

    在Java Web开发中,用户登录和注销功能是核心部分,而用户注销后点击浏览器的返回按钮,导致页面刷新并重新登录的问题是一个常见的困扰。这个问题的出现主要是由于浏览器缓存了用户登录时的表单信息,当用户注销后,...

    Javaweb用户登录注册

    在JavaWeb开发中,用户登录注册是常见的功能模块,它涉及到前端界面设计、后端数据处理以及数据库交互等多个环节。本项目作为一个入门级的实践,将帮助初学者掌握这一核心技能。 首先,我们要理解JavaEE(Java ...

    教学实施大纲(javaWEB方向)

    #### 六、JavaWeb开发技术 **1. JSP内置对象** - **JSP的概述**:JSP(JavaServer Pages)是一种基于Java的Web开发技术。 - **JSP中的作用域**:如page、request、session等,用于管理数据的有效范围。 - **会话...

    web开发期末考试试题

    2. 在JSP内置对象中,request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息,此对象的getParameter()方法可以获取客户端表单中某输入框提交的信息。 3. 在JSP内置对象中,response对象...

Global site tag (gtag.js) - Google Analytics