token标签输出两个隐藏的表单字段,用于防止表单的重复提交。要让token标签正常工作,需要启用TokenInterceptor或者TokenSessionInterceptor拦截器。
配置一:(需要配置的部分使用红色字体进行了标注)
1、 首先需要启用token,需要在struts.xml中进行配置token的拦截器:
如在login的action中:
<action name="login" class="LoginAction"> <result name="success" type="redirect">/mainpage.action</result> <result name="input">/index.jsp</result> <result name="invalid.token">/token.jsp</result> <interceptor-ref name="defaultStack" /> <interceptor-ref name="token" /> </action>
配置的invalid.token是指当表单被重复提交后,跳转到该页面。
然后还需要配置两个拦截器:分别是defaultStack和token
这样这个token就启动了。
2、启动token后,我们需要在页面中表单的部分添加<token/>标签
<s:form action="login" id="form1"> <s:textfield name="login.loginName" label="%{getText('loginNameOrEmail')}" id="loginName"></s:textfield> <div style="float: left;" id="div21"><font color="aqua"><s:text name="loginUsernamePrompt"></s:text></font> </div> <s:password name="login.loginPwd" label="%{getText('loginPwd')}" id="loginPwd" size="22"></s:password> <div style="float: left;" id="div22"><font color="aqua"><s:text name="loginPasswordPrompt"></s:text></font> </div> <s:token /> </s:form>
3、然后我们再新建一个token.jsp页面,用于重复提交后跳转到该界面,提示用户不要进行重复提交。
token.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> token </body> </html>
4、这样我们在登录界面,填写上用户名和密码后,如果提交过了表单,然后用重新提交这个表单的时候,如在表单页面进行刷新,就会自动跳转到token.jsp页面了。就是防止了表单的重复提交。
配置二:
上面在启动token的时候,我们是在action中进行配置的。我们也可以为整个package配置token:
<package name="facePot" extends="struts-default"> <interceptors> <interceptor-stack name ="myStack"> <interceptor-ref name ="token"/> <interceptor-ref name ="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name ="myStack"/> <action name="login" class="LoginAction"> <result name="success" type="redirect">/mainpage.action</result> <result name="input">/index.jsp</result> <result name="invalid.token">/token.jsp</result> </action> </package>
这样就会为这个包下的所有action都配置上这个token。然后在界面中使用也是一样的,只需加上<token/>标签即可。
<s:form action="login" id="form1"> <s:textfield name="login.loginName" label="%{getText('loginNameOrEmail')}" id="loginName"></s:textfield> <div style="float: left;" id="div21"><font color="aqua"><s:text name="loginUsernamePrompt"></s:text></font> </div> <s:password name="login.loginPwd" label="%{getText('loginPwd')}" id="loginPwd" size="22"></s:password> <div style="float: left;" id="div22"><font color="aqua"><s:text name="loginPasswordPrompt"></s:text></font> </div> <s:token /> </s:form>
当我们重复提交这个登陆表单的时候,就会跳转到token.jsp页面了。
相关推荐
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单重复提交问题**:当用户在提交表单时,由于网络延迟或用户误操作,可能会导致同一个表单被多次提交...
总结,Struts2的tokenSession机制是JavaEE Web开发中防止重复提交的有效手段,通过生成并校验token,确保每个请求的唯一性,从而保护了业务数据的完整性。在实际项目中,我们需要正确配置和使用这个机制,以提高应用...
通过自定义的Token类和方法,我们可以在不依赖Struts内置机制的情况下实现防止表单重复提交的功能。这种方式不仅灵活,而且易于理解和维护。开发者可以根据实际需求调整Token生成、存储和验证的方式,以适应不同的...
Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间...
在提供的压缩包文件"struts+token机制解决表单重复提交"中,可能包含了具体的Struts配置文件、Action类、Interceptor实现以及示例代码,可以帮助读者更深入地理解并实践这个机制。通过对这些代码的学习和研究,...
综上所述,Struts框架通过Token机制有效地解决了表单重复提交的问题,提供了更健壮的Web应用安全性。正确理解和应用这一机制对于Java Web开发者来说至关重要。在实际项目中,结合其他防御策略,如CSRF防护,可以...
总的来说,Struts2的Token机制是一种有效防止表单重复提交的方法,它通过生成和验证唯一标识来确保每个请求的唯一性,从而保护了业务的正确性和数据的一致性。在实际开发中,根据项目需求和安全策略,我们可以灵活...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用...综上所述,Struts2的Token机制是防止Web应用中重复提交的有效工具,通过合理的配置和编程,可以为用户的操作提供更安全的环境。
Struts2作为一个流行的Java Web框架,为解决表单重复提交提供了多种方法。 首先,关于表单重复提交的原因,有以下几点: 1. 服务器或网络延迟导致用户多次点击提交按钮。 2. 用户在表单提交后刷新浏览器页面。 ...
在Web表单提交中,防止重复提交是一个常见的需求,而Struts2的Token机制就是为了应对这一问题而设计的。Token机制能确保用户只能提交一次表单,避免了由于网络延迟或误操作导致的重复数据录入。 ### 一、Token机制...
通过这样的方式,我们可以在Struts2框架下有效地防止表单重复提交。同时,还可以结合其他策略,如使用AJAX异步提交,进一步增强用户体验。总的来说,防止表单重复提交是一个多层面、多层次的问题,需要综合运用...
总结起来,Struts2通过重定向策略可以有效地防止表单重复提交,结合其他如Token Session Strategy等方法,可以进一步提高应用的安全性和稳定性。开发者可以根据项目需求选择合适的防重提交方案,确保系统正常运行。
防止表单重复提交的方法(简单的token方式),内附实现代码及实现思路。
在Struts2中防止表单重复提交的过程主要包括以下几个步骤: 1. **生成Token**:当用户发起表单请求时,服务器会生成一个唯一的Token并将其存储在服务器的会话(Session)中,同时将这个Token作为隐藏字段放入到HTML...
总的来说,Struts2的`token`拦截器是防止重复提交的有效解决方案,通过结合合理的拦截器配置和跳转策略,可以确保应用程序的稳定性和数据一致性。在实际开发中,还需要考虑其他因素,如异常处理、用户体验优化等,以...
Struts的Token机制是Web应用中防止表单重复提交的一种常用方法。在处理表单提交时,如果用户意外地多次点击了提交按钮,可能会导致数据的重复录入,从而引起不必要的问题,例如订单重复、数据库数据异常等。为了解决...
在Web开发中,表单重复提交是一个常见的问题,可能导致数据的冗余或错误。JavaScript作为客户端脚本语言,可以通过多种策略来防止用户意外或恶意地多次提交表单。以下是一些关键的知识点: 1. **禁用提交按钮**:最...