为了 防止F5刷性重复提交
struts2 为我们提供了 token令牌机制
工作机制就不多说了 可以查看apache struts2 wiki
Google上的东西真的不能相信 入门学习还是用官方文档 英语菜也要上 呵呵
贴上具体配置吧
struts2.011.jar下的运用
struts.xml中的自己定义拦截栈
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.custom.i18n.resources"
value="messageResource" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.ui.theme" value="simple" />
<constant name="struts.objectFactory" value="spring" />
<package name="erp2system" extends="struts-default" >
<interceptors>
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor">
<param name="maximumSize">10000000</param>
</interceptor>
<!-- 定义“权限检查拦截器” -->
<interceptor name="authCheck"
class="com.chinadim.erp2.base.AuthCheckInterceptor">
</interceptor>
<!-- 系统默认的拦截栈 -->
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="authCheck"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<!-- 引入默认拦截栈 -->
<default-interceptor-ref name="myDefaultStack">
</default-interceptor-ref>
<global-results>
<result name="login" type="redirect">/erplogin.jsp</result>
</global-results>
</package>
<include file="struts/struts-operator.xml"/>
<!-- 其他.... -->
</struts>
具体的action里面配置
struts-operator.xml
<!-- 创建操作员 -->
<action name="createOperator" class="operatorAction" method="createOperator">
<interceptor-ref name="token" />
<interceptor-ref name="myDefaultStack" />
<result name="success_region" type="redirect">
/pageerror.jsp
</result>
<result name="invalid.token">/pageerror.jsp</result>
<result name="success" type="redirect-action">
operatorEnter
</result>
<result name="error">/WEB-INF/jsp/operator/add.jsp</result>
</action>
然后配置页面
在<s:form></s:form>标签里面加上
标签<s:token/>即可
然后就是跳转 显示重复提交页面
pageerror.jsp
<div class="div_center">
<img src="<%=basePath%>/images/stop.gif" align="middle"/>
<span class="waring">
<font size="5">您已经成功提交,请不要重复提交!</font>
</span>
</div>
然后就测试下吧 F5或者双击提交
就没问题了
ps:=============
每天进步一点点 => 架构师
技术 业务 服务
广 => 专
分享到:
相关推荐
在你提供的压缩包文件"token"中,可能包含了一个简单的Struts2令牌实例,你可以通过查看源代码学习如何在实际项目中集成和使用令牌机制。学习和理解这个实例,将有助于你更好地理解和应用Struts2的令牌功能。
而Struts2的Token机制要求每个提交都带有服务器生成的唯一令牌,这使得伪造表单无法通过验证,从而有效地防御了CSRF攻击。 **四、Struts2 Token配置** 在Struts2中,可以通过配置Action或者全局Interceptor来启用...
Struts2的令牌机制是其防止重复提交和CSRF(跨站请求伪造)攻击的一种重要安全策略。在Web开发中,尤其是使用MVC框架如Struts2时,确保用户请求的唯一性和安全性至关重要。令牌机制就是这样的一个工具,它通过在表单...
在处理表单提交时,为了防止重复提交或者跨站请求伪造(CSRF)攻击,Struts2引入了令牌机制。这个"struts2 令牌使用例子"是一个很好的实践教程,帮助开发者理解如何在实际应用中实施这一安全策略。 首先,我们需要...
在Struts框架中,令牌机制(Token)是一种防止重复提交的有效方法,它主要用于处理表单数据的并发控制,防止用户意外或者恶意地多次提交表单,从而确保数据的一致性和安全性。 在Web应用中,用户可能会因为网络延迟...
2. 实现TokenAware接口:为了让ActionForm能够访问session中的令牌,需要让ActionForm实现`org.apache.struts.action.TokenAware`接口,并实现`setToken(String token)`方法。 3. 生成令牌:在Action中,如`execute...
### Struts2令牌机制详解 #### 一、Struts2令牌机制概述 在Web应用程序开发过程中,为了防止重复提交表单或CSRF(跨站请求伪造)等安全问题,Struts2框架提供了一种名为“令牌”的机制。该机制通过在用户会话中...
Struts2提供了一种名为“token”的机制来解决这个问题。 **什么是Token机制?** Token机制是一种防止重复提交的方法,它通过在客户端(通常是浏览器的session或者cookie)和服务器端存储一个唯一的令牌,确保每个...
Struts2提供了一种称为“令牌”或“Token Session”的机制来解决这个问题。 令牌机制的工作原理是,在用户提交表单前,服务器会生成一个唯一的令牌,并将其添加到表单中隐藏字段或者放入session。当用户提交表单时...
为了避免这种情况,Struts2引入了令牌(Token)机制。 令牌机制的工作原理是这样的: 1. 当用户访问一个需要防重提交的页面时,服务器会生成一个唯一的令牌,并将其存储到用户的session中。 2. 这个令牌会被嵌入到...
在Struts的配置文件中定义一个Token拦截器,拦截所有需要防止重复提交的Action,然后在拦截器中实现Token的验证逻辑。 通过这种方式,Struts+Token机制可以有效地防止由于用户误操作或者网络延迟造成的表单重复提交...
<interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/> <interceptor-ref name="token"/> <!-- 其他拦截器 --> <result name="input">/error.jsp</result> <!-- 处理...
Struts1是一个经典的Java Web开发框架,它在处理表单提交时可能...然而,随着技术的发展,现代框架如Spring MVC、Struts2等提供了更完善的解决方案,例如利用HTTP的幂等性或一次性令牌(如CSRF Token)来处理此类问题。
- 使用`token`拦截器时,如果客户端的Token丢失,可能会导致“令牌不匹配”错误,这时需要正确处理这种情况,比如提示用户重新提交。 - 考虑到并发问题,确保在多线程环境下正确处理Token。 综上所述,Struts框架...
为了有效地防止Web应用程序中的表单重复提交问题,Struts框架提供了一种简单而强大的解决方案——同步令牌模式(Synchronization Token Pattern, STP)。下面详细介绍如何在Struts项目中实现这一功能。 1. **生成...
- **token**: Struts2的Token插件用于防止重复提交,通过在表单中隐藏一个唯一的令牌,每次请求都会检查令牌的唯一性和时效性,从而避免了并发操作导致的问题。 6. **tablib**: Tablib可能指的是Struts2的标签库,...
Struts Token机制的核心思想是在客户端(浏览器)和服务器端(应用服务器)之间维持一个唯一的令牌(Token)。当用户首次提交表单时,服务器会生成一个随机的、唯一标识的Token,并将其存储到用户的会话(Session)...