`
Dick.D
  • 浏览: 3324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

<s:token/>防止多次提交

阅读更多

防止多次提交表单,见表单:

 

<s:form action="formAction"> 
    <s:bean name="com.test.service.BookService" id="bs"></s:bean>
    <s:checkboxlist list="#bs.books" label="请选择喜欢的图书" name="b" listKey="author" 
listValue="name"  labelposition="top"></s:checkboxlist>
    <s:token/>
    <s:submit value="提交"/>
    </s:form>

 

 加入<s:token/> 还要在<action>中定义拦截器

 

<action name="formAction" class="com.test.action.FormAction">
			<interceptor-ref name="defaultStack"/>
			<interceptor-ref name="token"/>
			<result>success.jsp</result>
			<result name="invalid.token">/error.jsp</result>
</action>

 但拦截器判断为重复提交,则返回invalid.token,转到error.jsp

 

理解: 
1、JSP使用<s:token/>标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。 
2、token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行

 

分享到:
评论

相关推荐

    【原创】Struts2防止表单重复提交.doc

    如果用户尝试多次提交相同的表单,`token`拦截器会检测到无效的令牌,并跳转到配置的错误页面(例如`/invalidToken.jsp`)。 #### 五、总结 本文详细介绍了如何在Struts2框架中使用`&lt;s:token/&gt;`标签和`token`拦截器...

    struts2的驱动和防止重复提交

    防止表单重复提交是Web开发中的重要安全措施,以避免用户意外或恶意地多次提交同一表单。在Struts2中,可以使用`Token Interceptor`来实现这一功能。在表单中添加`&lt;s:token&gt;`标签,例如: ```html &lt;s:form action=...

    struts2中防止重复提交的方法

    总之,防止重复提交是Web应用开发中的重要一环,可以通过Struts2提供的 `&lt;s:token&gt;` 标签结合拦截器,或者结合客户端验证和服务器端状态管理等多种方式来实现。正确实施这些措施,可以有效避免数据的不一致性,提高...

    利用struts的token控制重复提交

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

    struts2中token限制表单多次提交

    在开发Web应用时,防止表单的多次提交是一个常见的需求,这可能导致数据重复或者逻辑错误。Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、...

    struts2的令牌机制

    &lt;s:token/&gt; &lt;/s:form&gt; ``` 4. **验证令牌**:当用户提交表单时,Struts2的拦截器会自动检测令牌。如果令牌有效,请求会被处理;如果令牌已经被使用或不存在,将会抛出异常,如`TokenException`。 5. **处理异常...

    struts标准库实现令牌

    &lt;s:token/&gt; &lt;input type="submit" value="提交"/&gt; &lt;/form&gt; ``` 4. 验证令牌 当用户提交表单时,Struts的`token`拦截器会自动检测令牌,如果令牌无效(例如,重复提交或CSRF攻击),则会抛出异常。在Action类中,...

    通过xml配置搞定Struts重复提交问题

    &lt;s:token name="struts.token.name" /&gt; &lt;input type="hidden" name="struts.token.name" value="%{#session['struts.token.name']}" /&gt; ``` 3. **配置Action**: 在Struts的配置文件(例如`struts.xml`)中,为...

    jsp中StrutsToken令牌

    在Web应用中,用户可能会无意或有意地多次点击提交按钮,导致服务器接收到重复的请求,这可能会对数据库或其他后端服务造成不必要的负担,甚至可能导致数据不一致。为了解决这个问题,Struts提供了StrutsToken机制。...

    struts2的学习笔记+测试源代码

    2. 提高数据一致性:避免因多次提交导致的数据冲突和错误。 3. 安全性:防止恶意用户通过自动化工具快速、大量提交请求。 五、注意事项 1. Token的有效性:通常Token需要设置一定的有效期,防止用户长时间未提交而...

    使用struts的同步令牌避免form的重复提交

    在Web应用中,用户可能会意外或恶意地多次点击提交按钮,导致表单数据被重复提交,这会引发一系列问题,比如数据库数据异常、业务逻辑错误等。为了解决这个问题,Struts提供了一种称为“同步令牌”(Synchronizer ...

    struts2令牌

    &lt;s:token name="user.token"&gt;&lt;/s:token&gt; ``` 这里`&lt;s:token&gt;`标签的作用是在页面上生成一个隐藏字段,其值即为`session`中存储的令牌值。`name`属性指定了令牌在`session`中的名称。 ##### 2. 表单提交时的验证 当...

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

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

    JavaEE Struts2利用tokenSession防止重复提交

    在Web环境中,由于网络延迟或用户误操作,可能会导致同一个表单数据被多次提交,这就是重复提交。这种现象可能导致数据不一致,对业务逻辑造成严重干扰。例如,在银行转账操作中,如果一个转账请求被重复提交,可能...

    用struts使用Token机制来实现防重复提交

    如果同一个表单被多次提交,只有第一次提交的Token会被接受,后续的提交因为Token无效而被拒绝。 以下是使用Struts实现Token机制的详细步骤: 1. **配置Struts2拦截器**: 首先,我们需要在Struts2的配置文件...

    Struts2解决表单重复提交

    在配置示例代码中,开发者需要在login.jsp页面中加入&lt;s:token&gt;&lt;/s:token&gt;标签,并确保表单提交到对应的Action,如LoginAction。在Struts2的配置文件struts.xml中,需要配置action,并引用token拦截器和defaultStack...

    Struts2防止重复提交的解决方案

    - 在表单中加入一个隐藏字段(如`&lt;s:token /&gt;`),每次提交表单时都会包含这个token值。 - 服务器端在接收到请求后会验证这个token值的有效性,如果验证通过,则继续处理;如果不通过,则拒绝处理。 - 每次提交后...

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

    &lt;input type="hidden" name="struts.token" value="&lt;s:property value="#session.token"/&gt;" /&gt; ``` 4. **验证Token** 在Action的`execute()`方法中,首先检查Token是否有效。如果Token已经存在于会话中并且与...

    详解struts2的token机制和cookie来防止表单重复提交

    如果Token已经存在,那么表单会被视为重复提交,从而避免了多次执行相同操作的风险。 1. **添加Token到表单**:在JSP页面中,使用Struts2的标签库,插入`&lt;s:token&gt;&lt;/s:token&gt;`,这会在表单中生成一个隐藏的Token...

Global site tag (gtag.js) - Google Analytics