`

struts2 token防止表单重复提交

 
阅读更多

在实际应用当中我们经常会遇到在客户端表单会重复提交问题,发生重复提交表单的原因有以下几点:

1、多次点击submit按钮

2、在提交后多次刷新页面

3、URL回车

struts2在使用的过程中会出现表单重复提交的问题,这一问题在某些场合将会造成非常严重的后果。如何避免这一问题的发生,以下有三种方法可以解决。

 

  1. 改变result的type类型为redirect
    struts2 的默认result类型为dispatcher,当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是 上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会再次出现表单重复提交的问题。如果选择redirect方式跳转页面,这 样就不会出现重复提交的问题;
    缺点:redirect跳转无法满足开发过程中的一些需求。

  2. 采用令牌方式  <s:token />
    Html代码  收藏代码
    1. <form id="login_form" method="post" action="userAction!login">  
    2.                <s:token></s:token>  
    3.                         用 户<input type="text" name="username"  placeholder="输入教工号或学号" />  
    4.                   密   码<input type="password" name="password"  placeholder="输入密码" />  
    5.                <div id="btn">  
    6.                   <a id="loginbutton" href="javascript:void(0)" onclick="login_submit()">登录</a>  
    7.                   <a href="javascript:void(0)" onclick="login_reset()">清空</a>  
    8.               </div>  
    9.               </form>  
     
    Xml代码  收藏代码
    1. <action name="userAction"   class="com.yingjun.sharing.action.UserAction" >  
    2.             <interceptor-ref name="myStack" />  
    3.             <interceptor-ref name="token" />  
    4.             <result name="invalid.token">/WEB-INF/jsp/login.jsp</result>  
    5.             <result  name="input">/WEB-INF/jsp/register.jsp</result>  
    6.             <result name="regsuccess">/WEB-INF/jsp/login.jsp</result>  
    7.         </action>  
     缺点:对于一次正常提交和一次重复提交,使用token拦截器会使得浏览器最终重定向到invalid.token指定的Result

  3.  采用令牌方式2  <s:token />
    Xml代码  收藏代码
    1. <action name="userAction"   class="com.yingjun.sharing.action.UserAction" >  
    2.           <interceptor-ref name="tokenSession" >  
    3.                <param name="includeMethods">register</param>  
    4.           </interceptor-ref>  
    5.           <interceptor-ref name="myStack"/>  
    6. <result  name="input">/WEB-INF/jsp/register.jsp</result>  
    7. <result name="regsuccess">/WEB-INF/jsp/login.jsp</result>  
    8. </action>  
       把token拦截器换为tokenSession拦截器。tokenSession拦截器与token拦截器唯一的不同是在判断某个请求为重复请求之 后,并不是立即重定向到名为invalid.token的Result,而是先阻塞这个重复请求,直到浏览器响应最初的正常请求,然后就可以跳转到处理正 常请求后的Result了。
分享到:
评论

相关推荐

    struts2利用token防止表单重复提交(源代码)

    struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...

    Struts2防止表单重复提交

    为了防止表单重复提交,Struts2提供了基于Token的解决方案: - **创建Token**: 当用户首次访问包含表单的页面时,服务器会创建一个唯一的Token,并将其保存在Session中。同时,这个Token也会被嵌入到表单中的隐藏...

    struts+token机制解决表单重复提交

    通过这种方式,Struts+Token机制可以有效地防止由于用户误操作或者网络延迟造成的表单重复提交,保证了服务器端数据的一致性和完整性。对于大型的、对数据一致性有严格要求的Web应用来说,这是一个非常重要的安全...

    struts2 防止表单重复提交的例子

    Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交...

    Struts之Token解决表单那重复提交

    在Struts配置文件中,为需要防止重复提交的Action添加一个拦截器引用,如`token`或`token-session`。这两个拦截器都可以处理Token,但`token-session`更安全,因为它会将Token存储在会话中,而不仅仅是请求中。 2....

    struts token机制解决表单重复提交

    Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...

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

    通过自定义的Token类和方法,我们可以在不依赖Struts内置机制的情况下实现防止表单重复提交的功能。这种方式不仅灵活,而且易于理解和维护。开发者可以根据实际需求调整Token生成、存储和验证的方式,以适应不同的...

    JavaEE Struts2利用tokenSession防止重复提交

    总结,Struts2的tokenSession机制是JavaEE Web开发中防止重复提交的有效手段,通过生成并校验token,确保每个请求的唯一性,从而保护了业务数据的完整性。在实际项目中,我们需要正确配置和使用这个机制,以提高应用...

    Struts2解决表单重复提交

    这样,当发生重复提交时,Struts2框架会自动处理并转向token.jsp页面,提示用户重复提交了表单。 对于第二种原因,即提交表单后刷新浏览器页面导致的重复提交,Struts2框架允许开发者通过配置结果视图的跳转方式来...

    Struts2防止表单重复提交示例

    在Struts2中防止表单重复提交的过程主要包括以下几个步骤: 1. **生成Token**:当用户发起表单请求时,服务器会生成一个唯一的Token并将其存储在服务器的会话(Session)中,同时将这个Token作为隐藏字段放入到HTML...

    struts2中token限制表单多次提交

    当用户尝试重复提交表单时,Struts2会检测到Token已经使用过,因此会抛出异常。你可以捕获这个异常并给出相应的提示,例如: ```java public class MyAction extends ActionSupport { @Override public void ...

    sturts2防止表单的重复提交 token

    总的来说,Struts2的Token机制是一种有效防止表单重复提交的方法,它通过生成和验证唯一标识来确保每个请求的唯一性,从而保护了业务的正确性和数据的一致性。在实际开发中,根据项目需求和安全策略,我们可以灵活...

    struts2_token控制刷新重复提交

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用...综上所述,Struts2的Token机制是防止Web应用中重复提交的有效工具,通过合理的配置和编程,可以为用户的操作提供更安全的环境。

    用STRUTS的TOKEN机制解决表单重复提交,转载自:百度文库

    Struts的Token机制是Web应用中防止表单重复提交的一种常用方法。在处理表单提交时,如果用户意外地多次点击了提交按钮,可能会导致数据的重复录入,从而引起不必要的问题,例如订单重复、数据库数据异常等。为了解决...

    struts2防止表单重复提交--重定向

    总结起来,Struts2通过重定向策略可以有效地防止表单重复提交,结合其他如Token Session Strategy等方法,可以进一步提高应用的安全性和稳定性。开发者可以根据项目需求选择合适的防重提交方案,确保系统正常运行。

    用Struts的Token机制解决表单重复提交.doc

    Struts的Token机制主要用于防止表单重复提交。其核心思想是通过比较客户端和服务器端的Token值来判断请求的有效性。下面详细介绍这一机制的工作流程。 #### 三、Token机制工作原理 1. **生成Token**: 当用户首次...

    Struts2防止重复提交解决方案

    总的来说,Struts2的`token`拦截器是防止重复提交的有效解决方案,通过结合合理的拦截器配置和跳转策略,可以确保应用程序的稳定性和数据一致性。在实际开发中,还需要考虑其他因素,如异常处理、用户体验优化等,以...

    Struts2_表单的重复提交问题

    通过使用Struts2提供的Token机制,我们可以有效地防止表单的重复提交,从而提高应用程序的安全性和稳定性。此外,正确地配置Struts2的Filter以及合理地管理Session状态也是十分重要的。希望以上内容能够帮助你在实际...

    防止表单重复提交

    本篇文章将深入探讨如何防止表单重复提交,主要关注于基于Struts2框架的解决方案。 首先,理解表单重复提交的原因。用户在点击提交按钮后,如果网络延迟或用户误操作导致页面刷新或再次点击提交,就可能发生重复...

    利用struts的token控制重复提交

    Struts的Token机制主要用来防止用户意外或恶意的多次提交表单,例如在刷新页面时重复提交数据。它的工作原理如下: 1. **生成Token**: 当用户访问一个需要防重复提交的表单时,服务器会生成一个唯一的Token并将其...

Global site tag (gtag.js) - Google Analytics