表单重复提交:

1.第一种:添加以后刷新页面(刷新的是Servlet)

2.第二种:重复点击提交按钮.

* 使用令牌机制:(防止表单重复提交)

* 在表单页面中 生成一个令牌

* 将这个令牌保存在session中一份,保存在表单隐藏字段中一份.

* 当表单提交的时候,获得到session中令牌和隐藏字段中令牌.

* 将sesion中的令牌移除了.

防表单重复提交的原理:

原理:令牌机制.

* 在JSP页面中,生成了一个随机的字符串,将字符串保存到session中一份,放到表单的隐藏字段中一份,提交,提交到后台之后,获得到两份随机字符串,将session中的清空.(保证这个令牌只能使用一次,提交一次).刷新页面,session中令牌已经失效了.

Struts2防表单重复提交.

* 使用表单标签:<s:token/>

* 在后台配置一个拦截器.token的拦截器.(这个拦截器没有在默认的栈中.)

* 步骤:

* 1.JSP页面表单中使用:<s:token/>

* 2.在struts的配置文件中加入引入token拦截器的代码:

<interceptor-ref name="defaultStack"/>

<interceptor-ref name="token"/>

* 3.需要在<result>配置一个name=”invalid.token”的跳转页面.(表单重复提交跳转的页面)

其他方式1:

禁掉提交按钮。表单提交后使用Javascript使提交按钮disable。这种方法防止心急的用户多次点击按钮。但有个问题,如果客户端把Javascript给禁止掉,这种方法就无效了。

其他方式2:

Post/Redirect/Get模式。在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)模式。简言之,当用户提交了表单后,你去执行一个客户端的重定向,转到提交成功信息页面。

这能避免用户按F5导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样问题。

其他方式3:

在数据库里添加约束。在数据库里添加唯一约束或创建唯一索引,防止出现重复数据。这是最有效的防止重复提交数据的方法。

关于防止表单form重复提交的方式的更多相关文章

  1. struts2 文件的上传下载 表单的重复提交 自定义拦截器

    文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设 ...

  2. php-- 避免表单的重复提交

    用户提交表单时可能因为网速的原因,或者网页被恶意刷新,致使同一条记录重复插入到数据库中,这是一个比较棘手的问题.我们可以从客户端和服务器端一起着手,设法避免同一表单的重复提交. 1.使用客户端脚本 提 ...

  3. Session机制三(表单的重复提交)

    1.表单的重复提交的情况 在表单提交到一个servlet,而servlet又通过请求转发的方式响应了一个JSP页面,这个时候地址栏还保留这servlet的那个路径,在响应页面点击刷新. 在响应页面没有 ...

  4. HttpSession解决表单的重复提交

    1). 重复提交的情况: ①. 在表单提交到一个 Servlet, 而 Servlet 又通过请求转发的方式响应一个 JSP(HTML) 页面, 此时地址栏还保留着 Serlvet 的那个路径, 在响 ...

  5. Struts2 - 表单的重复提交问题

    用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消费了多次.因此,重复提 ...

  6. HttpSession之表单的重复提交 & 验证码

    如果采用 HttpServletResponse.sendRedirct() 方法将客户端重定向到成功页面,将不会出现重复提交问题 1.表单的重复提交 1). 重复提交的情况: ①. 在表单提交到一个 ...

  7. php中如何防止表单的重复提交

    在php中如何防止表单的重复提交?其实也有几种解决方法. 下面小编就为大家介绍一下吧.需要的朋友可以过来参考下 代码: <?php /* * php中如何防止表单的重复提交 * by www.j ...

  8. Spring MVC表单防重复提交

    利用Spring MVC的过滤器及token传递验证来实现表单防重复提交. 创建注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RU ...

  9. 使用aop注解实现表单防重复提交功能

    原文:https://www.cnblogs.com/manliu/articles/5983888.html 1.这里采用的方法是:使用get请求进入表单页面时,后台会生成一个tokrn_flag分 ...

随机推荐

  1. redis与ssm整合(用 redis 替代mybatis二级缓存)

    SSM+redis整合 这里主要是利用redis去做mybatis的二级缓存,mybaits映射文件中所有的select都会刷新已有缓存,如果不存在就会新建缓存,所有的insert,update操作都 ...

  2. GoogleStyle格式化代码

    <div class="iteye-blog-content-contain" style="font-size: 14px"></div&g ...

  3. 下拉菜单  - - css

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  4. Netty Nio启动全流程

    Netty Nio启动全流程 1. 各组件之间的关系 说明:EventLoopGroup类似线程池,EventLoop为单线程,每个EventLoop关联一个Nio Selector,用于注册Chan ...

  5. UFOV页面 使用canvas

    canvas画八边形:cxt.beginPath();cxt.beginPath(); canvas内线条的粗细:cxt.lineWidth = '2'; 鼠标消失: css: html, body ...

  6. 团队项目第六周——Alpha阶段项目复审(名字很难想队)

    Alpha阶段项目复审 小组 优点 缺点 排名 小谷围驻广东某工业719电竞大队 一个贴近大学生生活的二手交易平台.界面美观功能完善. 部分功能未完善,没有第三方登录 1 中午吃啥队 系统完善,界面简 ...

  7. sklearn使用小记GridSearchCV

    def test_grid_search(): from sklearn import datasets,svm iris = datasets.load_iris() parameters = {' ...

  8. linux系统编程之文件与IO(三):利用lseek()创建空洞文件

    一.lseek()系统调用 功能说明: 通过指定相对于开始位置.当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置 函数原型: #include <sys/ ...

  9. pgAdmin4 汉化

  10. sql server 修改表字段信息

    alter table oa_archives_folder alter column folder_category varchar(200)