Struts2表单
<s:debug/>
<s:form action="customerAction_save" method="post" namespace="/model">
用户名:<s:fextfield name="username" /><br> <s:token/>
密码: <s:password name="psw" /><br>
电话:<s:textfield name="tel"/><br>
<s:submit value="保存" /><br>
</s:form>
<s:token/>
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token value="1KDSLJLDJLSDJLDSDSLDSL" />
------------------------------------------
<package name="model" namespace="/model" extends="struts-default">
<!--将token拦截器加到默认栈中-->
<interceptors>
<interceptor-stack name="tokenStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<!--将token拦截器放到默认栈后面-->
<interceptor-ref name="token">
<!--说明只对定义的save方法拦截,如果对多个方法进行拦截,可以用逗号分开-->
<param name="includeMethods">save</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
注意:上边是说 我定义了一个拦截器 tokenStack, 包含defaultStack,和token
虽然进行定义了,但是行不能用
下一步是让我在加载的时候,使用这个拦截器栈
<default-interceptor-ref name="tokenStack"></default-interceptor-ref>
<action name="customerAction_*" class="cn.xiaoxian.web.CustomerAction" model="{1}">
<result name="add">/model/add.jsp</result>
<result name="success">/model/success.jsp</result>
<result name="edit">/model/edit.jsp</result>
<!--表单重复提交 定义的错误页面-->
<result name="invalid.token">/model/message.jsp</result>
</action>
</package>
---------------------
message.jsp
<body>
<!--当使用struts的token实现表单重复提交的时候,在出错的jsp中,可以使用<s:actionerror/>用来显示重复提交的信息-->
<s:actionerror/><br>
重复提交
</body>
在struts-message.properties中定义的错误信息
分享到:
相关推荐
Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...
其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
4. **验证与处理**:当表单提交后,Struts2的tokenSession拦截器会自动进行token的验证。如果验证通过,业务逻辑正常执行;若失败,则会抛出异常,提示用户重新操作。 在实际应用中,我们还需要考虑一些其他情况,...
在实际应用中,你还需要在Struts2的配置文件(通常是`struts.xml`)中注册这个自定义拦截器,并将其应用到相应的Action上,以确保在执行Action之前先经过拦截器的检查。 总结来说,防止重复提交的自定义拦截器主要...
Struts2拦截器会检查这个令牌,确保它与服务器会话中的令牌匹配。 3. **令牌验证**:如果令牌匹配,那么表单数据会被正常处理;如果不匹配或者令牌不存在,那么表单提交将被拒绝,以此来防止重复提交或非法请求。 ...
以上步骤展示了如何使用Spring Boot中的自定义拦截器和自定义注解来实现对特定方法的选择性拦截。这种机制可以非常灵活地控制哪些请求需要经过额外的验证或处理,对于构建安全可控的应用程序来说非常重要。
下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间传递一个唯一的标识符(Token)来防止表单的重复提交。当用户首次提交表单时...
1. **启用Token插件**:在Struts2的配置文件`struts.xml`中,需要启用Token拦截器栈,如下所示: ```xml <package name="default" extends="struts-default"> <interceptor-ref name="token"> <!-- 是否将...
**创建自定义拦截器**在Struts2中,开发者可以方便地创建自己的拦截器。首先,需要定义一个实现`com.opensymphony.xwork2.interceptor.Interceptor`接口的类,并实现其`intercept()`方法。然后,在Struts配置文件中...
在Java Web应用开发中,Struts2框架提供了一种非常实用的方法来解决这个问题——通过使用`tokenSession`拦截器。相比于传统的`token`拦截器,`tokenSession`提供了更加灵活和友好的用户体验。本文将深入探讨`token...
3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...
在Struts2中,通过自定义拦截器,我们可以轻松地实现这一功能。 首先,我们需要理解Struts2拦截器的工作原理。拦截器是基于Java的动态代理模式实现的,它们形成一个拦截器栈,当请求到达Action时,会按照栈中定义的...
1. **配置Struts2的Token拦截器:** 在struts.xml配置文件中,需要将`token`拦截器加入到默认或者特定的Action配置中。例如: ```xml <interceptor name="token" class="org.apache.struts2.interceptor....
然而,如果项目组决定不使用Struts2的内置标签,那么就需要自定义拦截器来达到防止重复提交的目的。 1. **自定义拦截器的实现** - 创建一个新的拦截器类,比如`TokenAtionInterceptor`,该类需要继承自Struts2的`...
"CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载" 这个标题揭示了该项目的核心技术栈,包括: 1. CXF 3.1.16:这是一个开源的服务框架,用于构建和开发服务,支持SOAP和RESTful Web服务...
### Struts2拦截器详解 #### 一、拦截器的概念与意义 拦截器(Interceptor)在Struts2框架中扮演着至关重要的角色。它的工作原理类似于过滤器(Filter),能够拦截用户请求,并对其进行预处理或者后处理。拦截器...
### Struts2内置拦截器简介 Struts2框架在实现MVC模式时,为了更好地管理请求处理过程中的各个阶段,引入了拦截器机制。...通过对内置拦截器的合理配置和使用,可以使Struts2应用更加健壮和高效。
1、响应拦截器处理401权限错误。 2、防止重复请求refreshToken接口。 3、同时多个请求返回401,需要刷新token。 阅读建议:此资源以简单的demo演示了RefreshToken使用的全过程,介绍了基本的思路,所以在学习的过程...
首先,我们需要在Struts2的配置文件(struts.xml)中添加Token拦截器。这个拦截器会处理Token的生成和验证过程。例如: ```xml <interceptor name="token" class="org.apache.struts2.interceptor....
为了使用自定义的拦截器,我们需要在struts.xml配置文件中声明它,并将其加入到默认的拦截器栈或自定义的拦截器栈中。例如: ```xml <!-- 其他默认的拦截器 --> <!-- ... --> <!-- 配置Action --> ...