如果服务器响应慢的情况下,用户会重复提交多个表单,这时候有两种设计思想:

1.在客户端使用JS技术,禁止客户重复提交表单。但是这样会使一些不使用浏览器方式登陆的人比如使用底层通信来攻击你的服务器

2.在服务器端进行验证

Struts2设计了token标签来进行验证,在使用token时要注意,你点击两次之后,它会回到"invalid.tonken"那个页面,这时如果你使用回退的方式或者F5方式再次提交,会被拦截

使用token的方法:

1.在需要使用验证的的form标签里面,加入<s:token/>

2.在struts.xml中配置tonken拦截器(注意:加入token拦截器后,会使默认的defaultStack拦截器失效,这时候要手动加入defaultStack拦截器)

如果截取到重复提交,会返回"invalid.token"的reult----------------demo:

<action name="userAction" class="com.huohuo.action.UserAction">
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="loginsuccess">/loginSuccess.jsp</result>
<result name="loginfail">/loginFailed.jsp</result>
<result name ="input" > /index.jsp </result>
<result name="invalid.token">/error.jsp</result>
</action>

加入<interceptor-ref/>和<result name="invalid.token" />标签

注意:如果提交表单之后,你需要再转向另一个action提交表单,这时候,你需要使用<a/>标签来转向那个action的提交form的界面。

亲测:你在登录JSP页面加入了token标签,但是你在此写了个<a/>转向了一个带有表单的注册页面,注册之后返回成功页面,并在成功页面写了一个form让用户登录,这时候会提醒你不要二次提交。

解决方法:在注册成功页面写一个<a/>转回登录页面就OK

Struts2 token禁止重复提交表单的更多相关文章

  1. struts2中token防止重复提交表单

    struts2中token防止重复提交表单 >>>>>>>>>>>>>>>>>>>&g ...

  2. JavaWeb 之 重复提交表单和验证码相关的问题!

    下面我们首先来说一下表单的重复提交问题,我们知道在真实的网络环境中可能受网速带宽的原因会造成页面中表单在提交的过程中出现网络的延迟等问题,从而造成多次提交的问题!下面我们就具体来分析一下造成表单提交的 ...

  3. PHP防止用户重复提交表单

    我们提交表单的时候,不能忽视的一个限制是防止用户重复提交表单,因为有可能用户连续点击了提交按钮或者是攻击者恶意提交数据,那么我们在提交数据后的处理如修改或添加数据到数据库时就会惹上麻烦. 那么如何规避 ...

  4. php防止重复提交表单

    解决方案一:引入cookie机制来解决 提交页面代码如下a.php代码如下: <form id="form1" name="form1" method=& ...

  5. JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体

    1. struts 工作流程图 超链接 2. 入门案例 struts入门案例: 1.写一个注册页面,把请求交给 struts处理 <form action="${pageContext ...

  6. spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  7. 关于Asp.Net中避免用户连续多次点击按钮,重复提交表单的处理

    Web页面中经常碰到这类问题,就是客户端多次点击一个按钮或者链接,导致程序出现不可预知的麻烦. 客户就是上帝,他们也不是有意要给你的系统造成破坏,这么做的原因很大一部分是因为网络慢,点击一个操作之后, ...

  8. JQuery禁止回车提交表单

    //禁止回车键提交表单——动态绑定 $(function(){ $("input").on('keypress',  //所有input标签回车无效,当然,可以根据需求自定义 fu ...

  9. JavaScript防止重复提交表单

    往往有些用户网络慢或者其他问题,在提交表单的时候使劲点击保存提交按钮,在提交表单的时候加上下面的代码,即可以限制在一定时间内,只有一次点击是有效的. <script> var mypret ...

随机推荐

  1. mariadb 10.2.3支持oracle execute immediate语法

    在之前的版本包括oracle mysql/percona server版本中,所有的动态SQL都需要通过prepare执行,如下: "; execute stmt; deallocate p ...

  2. hadoop 集群的配置

    在经过几天折腾,终于将hadoop环境搭建成功,整个过程中遇到各种坑,反复了很多遍,光虚拟机就重新安装了4.5次,接下来就把搭建的过程详细叙述一下 0.相关工具: 1,系统环境说明: 我这边给出我的集 ...

  3. Code First :使用Entity. Framework编程(7) ----转发 收藏

    第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...

  4. 《C#微信开发系列(4)-接收 / 返回文本消息》

    4.0接收 / 返回文本消息 ①接收/返回文本消息原理说明 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,着手开发之前先行阅读微信公众平台接收普通消息 ...

  5. jquery返回顶部,支持手机

    jquery返回顶部,支持手机 效果体验:http://hovertree.com/texiao/mobile/6/ 在pc上我们很容易就可以用scrollTop()来实现流程的向上滚动的返回到顶部的 ...

  6. request.getParameter(“参数名”) 中文乱码解决方法

    今天浏览项目时候,遇到一个问题,页面用${requestScope.参数名 }获取的值是乱码,然后搜了一下,最后说是编码的问题,附上查找的结果: 在Java 开发中,如果框架搭建的不完善或者初学者在学 ...

  7. Android Studio 2.2.2导入Eclipse中创建的项目

    最近随视频教程学习Android,原本都是用Adt写Android程序,中途教程换成了Android Studio,于是我自己下了android studio 2.2.2安装好,并下载好sdk,也跟着 ...

  8. iOS 动画绘制线条颜色渐变的折线图

    效果图 .................... 概述 现状 折线图的应用比较广泛,为了增强用户体验,很多应用中都嵌入了折线图.折线图可以更加直观的表示数据的变化.网络上有很多绘制折线图的demo,有 ...

  9. ORA-01950: no privileges on tablespace xxxx

    案例场景: 新建了一个表空间后TBS_MARKET_DAT,希望将归档的数据放置在这个表空间. SQL> CREATE TABLESPACE TBS_MARKET_DAT   2  DATAFI ...

  10. Ambari server:无法显示内存,CPU等使用率

    Ambari server安装完毕后,都能正确显示各种信息.运行了几天后,发现无法显示内存,CPU等信息. 查找日志发现有错误,日志路径:/var/log/ambari-server/ambari-s ...