`
ykyfendou
  • 浏览: 406677 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2提供token关键字,可以防止表单的重复提交

阅读更多

token标签输出两个隐藏的表单字段,用于防止表单的重复提交。要让token标签正常工作,需要启用TokenInterceptor或者TokenSessionInterceptor拦截器。

 

 

配置一:(需要配置的部分使用红色字体进行了标注)

 

1、  首先需要启用token,需要在struts.xml中进行配置token的拦截器:

 

如在loginaction中:

 

        <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是指当表单被重复提交后,跳转到该页面。

 

然后还需要配置两个拦截器:分别是defaultStacktoken

 

这样这个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利用token防止表单重复提交(源代码)

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

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

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

    JavaEE Struts2利用tokenSession防止重复提交

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

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

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

    struts2中token限制表单多次提交

    Struts2提供了Token插件来解决这个问题,确保每个表单提交只能被执行一次。下面将详细阐述Struts2中Token机制的工作原理、配置以及使用方法。 1. Token机制概述: Token机制是通过在客户端(浏览器)和服务器之间...

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

    在提供的压缩包文件"struts+token机制解决表单重复提交"中,可能包含了具体的Struts配置文件、Action类、Interceptor实现以及示例代码,可以帮助读者更深入地理解并实践这个机制。通过对这些代码的学习和研究,...

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

    综上所述,Struts框架通过Token机制有效地解决了表单重复提交的问题,提供了更健壮的Web应用安全性。正确理解和应用这一机制对于Java Web开发者来说至关重要。在实际项目中,结合其他防御策略,如CSRF防护,可以...

    sturts2防止表单的重复提交 token

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

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

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

    struts2_token控制刷新重复提交

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

    Struts2解决表单重复提交

    Struts2作为一个流行的Java Web框架,为解决表单重复提交提供了多种方法。 首先,关于表单重复提交的原因,有以下几点: 1. 服务器或网络延迟导致用户多次点击提交按钮。 2. 用户在表单提交后刷新浏览器页面。 ...

    struts2的token实现.

    在Web表单提交中,防止重复提交是一个常见的需求,而Struts2的Token机制就是为了应对这一问题而设计的。Token机制能确保用户只能提交一次表单,避免了由于网络延迟或误操作导致的重复数据录入。 ### 一、Token机制...

    防止表单重复提交

    通过这样的方式,我们可以在Struts2框架下有效地防止表单重复提交。同时,还可以结合其他策略,如使用AJAX异步提交,进一步增强用户体验。总的来说,防止表单重复提交是一个多层面、多层次的问题,需要综合运用...

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

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

    防止表单重复提交的方法(简单的token方式)

    防止表单重复提交的方法(简单的token方式),内附实现代码及实现思路。

    Struts2防止表单重复提交示例

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

    Struts2防止重复提交解决方案

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

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

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

    javascript方式防止表单重复提交

    在Web开发中,表单重复提交是一个常见的问题,可能导致数据的冗余或错误。JavaScript作为客户端脚本语言,可以通过多种策略来防止用户意外或恶意地多次提交表单。以下是一些关键的知识点: 1. **禁用提交按钮**:最...

Global site tag (gtag.js) - Google Analytics