`

普通HTML表单的防止重复提交

阅读更多
流程 如下: servelet(生成令牌*随机数*保存到session) ===> 编辑页面(代有HTML的普通FORM表单,表单里有一个HIDDEN )===提交数据 ===>servelet(HIDDEN值跟SESSION里的值比较* 重新生成令牌)

servelet:
           /**
  * 生成一个10位的随机数,用字符串表示
  * @return 返回生成的1000位的随机数
  */
public String createAutoNum() {
  char[] num = new char[10];// 生成一个1000位的char数组
  Random ran = new Random();// 随机数类
  int temp;// 存放当前随机数
  char cur;// 存放当前字符
  for (int i = 0; i < num.length; i++) {
   temp = ran.nextInt(10);// 生成一个0-9的随机数
   cur = (char) ('0' + temp);// 转化成char型的数字
   num[i] = cur;// 放到数组的当前位
  }
  return new String(num);// 返回这个随机数(用字符串形式)
}


HttpSession session = httpServletRequest.getSession();
session.setAttribute("qdtoken", createAutoNum());//设置命令牌


//编辑页面
String qdtoken = (String)request.getSession().getAttribute("qdtoken");
<input type="hidden" name="qdtoken" value="<%=qdtoken %>" />

servelet :

HttpSession session = request.getSession();
if(qdtoken.equals(session.getAttribute("qdtoken"))){//检查是否重复提交
    session.setAttribute("qdtoken", createAutoNum());
}else{

session.setAttribute("qdtoken", createAutoNum());//提交令牌 防止重复提交
}


分享到:
评论

相关推荐

    防止NET按钮重复点击方法

    当用户在网络条件不佳或系统响应较慢的情况下连续点击按钮时,可能会导致多次触发相同的操作,如提交表单、执行数据库操作等,进而引发一系列的问题,比如数据冗余、不必要的服务器负载增加等。 #### 方法概述 ...

    php程序员面试题(含html、JavaScript、php和mysql)

    **解析:**为防止重复提交,可以禁用提交按钮或使用JavaScript阻止重复点击。 #### 表单元素操作 **问题:**`textarea` 取值赋值,后台取值。 **解析:** - 取值:`document.getElementById("textareaId").value`...

    jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法

    这时,我们可以利用jQuery来实现一个提交按钮,在点击后变成“正在处理”的字样,并且禁用按钮,防止重复提交。接下来,我们将详细介绍这种技术实现的原理和具体的步骤。 首先,我们来看看HTML表单提交的常规流程。...

    web页面如何写测试用例

    - 验证是否能防止重复提交。 **7. 并发操作处理** - **目标**: 确认在并发操作情况下系统的稳定性和准确性。 - **测试步骤**: - 使用两个不同的浏览器同时操作同一记录。 - 观察系统如何处理这种冲突。 - 创建...

    图书管理系统servlet+mysql+jdbc+html.doc

    5. **Cookie与Session**:Cookie用于在客户端存储用户信息,如登录状态,使得用户在一定时间内无需重复登录。Session在服务器端存储用户信息,当用户完成操作或安全退出时,服务端会清除Session,确保数据安全。 6....

    表白墙站源码.zip

    通过研究源码,可以了解到如何处理表单提交、如何存储和显示数据、如何实现IP检测以及如何创建动态图像等技术。这对于提升PHP编程技能,尤其是涉及到用户交互和安全性的处理方面,有着实际的应用价值。 总之,...

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

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

    ASP实例--网上调查管理系统

    2. **调查表单**:用户填写调查问卷的页面,包含多个输入字段,如选择题、填空题等,利用HTML表单元素和JavaScript验证用户输入。 3. **提交页面**:用户提交问卷后,服务器端处理数据并确认提交成功,可能还会提供...

    雪晖PHP投票系统xhvote 发布.zip

    4. **表单处理与验证**:系统包含用于创建和提交投票的HTML表单。PHP代码负责接收和验证这些表单数据,确保投票的有效性。 5. **安全防护**:考虑到投票系统的公开性质,xhvote可能包含了防止SQL注入、XSS攻击等...

    php新闻管理系统源码

    学习如何创建和处理HTML表单,以及如何防止SQL注入,是使用此源码时要关注的点。 4. **模板引擎**:尽管此系统可能未使用复杂的模板引擎,但会包含基础的HTML嵌入PHP代码的方式,实现动态内容生成。理解如何在HTML...

    JSP 小项目BBS论坛

    正确使用这两种方式有助于避免URL泄露和重复提交问题。 ### 7. 数据分页 为了提高用户体验,大型论坛通常会对帖子列表进行分页显示。这需要在服务器端计算每页的帖子数量,并传递当前页码到前端。在JSP中,可以使用...

    user_land.rar_jsp_jsp 登陆_jsp 登陆_jsp登陆_用户登陆

    表单提交后,JSP页面会接收到这些数据,并进行验证。验证过程包括检查用户名是否存在,以及密码是否匹配存储的值。这通常通过查询数据库来实现。 区分两种用户,开发者可能在数据库中为每个用户分配一个角色字段,...

    jQuery实现倒计时重新发送短信验证码功能示例

    在以上提到的实例中,通过在按钮点击事件中调用`settime`函数来启动倒计时,并禁用按钮防止重复点击,直到倒计时结束,用户才能再次触发验证码的发送请求。这种实现方式简单而有效,且易于集成到现有的前端工程中。 ...

    php比较完美的注册登录系统

    7. **防止重复登录**:同一账号在不同设备登录时,可以清除原有会话,或者设定策略允许多处登录但提示用户。 8. **错误处理与日志记录**:通过`try-catch`结构处理可能出现的异常,记录错误信息到日志文件,方便...

    新闻发表系统基于jsp

    1. **表单提交**:HTML表单用于收集用户输入的用户名和密码,通过HTTP POST请求发送到服务器。 2. **会话管理**:使用JSP的session对象来跟踪已登录的用户,确保安全性,防止未授权访问。 3. **验证机制**:服务器端...

    文件上传下载源代码,FileUpload上传文件

    5. 处理文件:对于`FileItem`,检查其是否是普通表单字段还是上传文件。如果是文件,我们可以获取其输入流,然后写入到服务器指定的存储位置。 三、关键类和方法 - `ServletFileUpload`: 负责解析`multipart/form-...

    PHP实例开发源码——个人发卡平台程序源码 PHP版.zip

    - 卡密绑定与解绑:将卡密与订单关联,完成交易后解绑卡密,防止重复使用。 7. **订单管理** - 订单创建:用户购买时生成订单,记录订单信息,如购买的卡密、总价、用户信息等。 - 订单状态:跟踪订单状态,如待...

    图书管理系统servletmysqljdbchtml.doc

    在图书管理系统中,HTML用于创建用户界面,包括登录表单、图书列表、留言区等。 8. **MySQL**: MySQL是一个关系型数据库管理系统,用于存储图书数据。系统可能使用基本的SQL操作(增、删、改、查)以及多表联查来...

    在线投票系统

    这个过程需要验证用户身份,防止重复投票,同时确保投票数据的准确记录。后端服务器会接收到用户的投票请求,处理后更新投票数据库。 3. 查看结果:在投票结束后,用户可以查看投票结果。系统可能会根据管理员设定...

    wicket文档

    用于触发事件或提交表单。 - **5.4.4 提交链接** 类似于按钮,但使用链接的形式。 - **5.4.5 输入文本控件** 用于接收用户输入的文本。 - **5.4.6 支持数据必填的文本控件** 强制用户必须填写某些字段。 ...

Global site tag (gtag.js) - Google Analytics