`
cuisuqiang
  • 浏览: 3962714 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3672090
社区版块
存档分类
最新评论

Struts2 防止表单重复提交

    博客分类:
  • SSH
阅读更多

网上查了,书也看了,自己实践了一下!

 

首先要配置拦截器,拦截器用于控制重复提交内容!其实原理很简单,就是在表单内生成一个序列,判断是否为新的序列,如果是之前的序列,则证明是一个重复提交内容!

 

拦截器配置如下:

<?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>
	<package name="common" extends="struts-default" namespace="/common">		
		<interceptors>
			<interceptor-stack name="loginStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="token"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="loginStack"></default-interceptor-ref>
		<action name="loginAction_*" class="loginAction" method="{1}">
			<result name="success">/welcome.jsp</result>
			<result name="invalid.token" type="redirect">/index.jsp</result>
			<result name="input"  type="redirect">/index.jsp</result>
		</action>
	</package>	
</struts>

 

注意:

如果你不引用:

<interceptor-ref name="defaultStack"></interceptor-ref>

那么你的后台就不能再接收到参数。

<result name="invalid.token" type="redirect">/index.jsp</result>
<result name="input"  type="redirect">/index.jsp</result>

 这两个返回你一定要配置!一个是重复提交的处理,一个是没有表单标记时的处理!

 

JSP中增加Struts标签的引用

<%@taglib prefix="s" uri="/struts-tags" %>

 在表单内增加一个标记:

<s:form action="" name="form1" method="post">
<s:token></s:token>
</s:form>

 

 页面上会看到输出两个隐藏域:

<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>

 

这就是你当前表单的标记,如果没有标记,则返回INPUT,如果标记重复就是重复提交返回invalid.token! 

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

5
1
分享到:
评论
10 楼 qq270010101 2013-09-02  
厚颜无耻的转发哈哈哈哈哈哈
http://qq270010101.iteye.com/blog/1935631
9 楼 cuisuqiang 2012-11-11  
hk五指 写道
<action name="loginAction_*" class="loginAction" method="{1}"> 
method="{1}"什么意思呀!

就是那个 * !比如你请求的是loginAction_add,那么就会走Action里面的add方法!Struts2的基础!
8 楼 hk五指 2012-11-11  
<action name="loginAction_*" class="loginAction" method="{1}"> 
method="{1}"什么意思呀!
7 楼 cuisuqiang 2012-05-08  
diyunpeng 写道
这东西配置太麻烦了。

回头自己做一个!
6 楼 diyunpeng 2012-05-08  
这东西配置太麻烦了。
5 楼 gc715409742 2012-04-20  
<interceptor-ref name="token">方法名</interceptor-ref>

嗯,控制那些方法不能反复提交。
4 楼 fuyuwei 2012-04-20  
cuisuqiang 写道
fuyuwei 写道
   

貌似你很兴奋?其实这是老知识了,咱只是再搞一下而已!

学到了新东西就得兴奋一下啊,谢谢lz
3 楼 cuisuqiang 2012-04-20  
fuyuwei 写道
   

貌似你很兴奋?其实这是老知识了,咱只是再搞一下而已!
2 楼 fuyuwei 2012-04-20  
   
1 楼 fuyuwei 2012-04-20  
 

相关推荐

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

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

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

    ### Struts2防止表单重复提交的技术解析 #### 一、引言 在Web应用程序开发过程中,表单重复提交是一个常见的问题,特别是在网络环境不稳定或用户误操作的情况下。这种重复提交不仅可能导致数据冗余,还可能引起事务...

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

    下面将详细解释Struts2如何通过重定向来防止表单重复提交。 首先,理解表单重复提交的场景:用户在提交表单后,由于网络延迟或其他原因,可能会无意中多次点击提交按钮。如果服务器没有处理这些重复请求,那么相同...

    Struts2防止表单重复提交示例

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

    struts2利用token防止表单重复提交(源代码)

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

    Struts2解决表单重复提交

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

    Struts2防止重复提交解决方案

    在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...

    防止表单重复提交

    本篇文章将深入探讨如何防止表单重复提交,主要关注于基于Struts2框架的解决方案。 首先,理解表单重复提交的原因。用户在点击提交按钮后,如果网络延迟或用户误操作导致页面刷新或再次点击提交,就可能发生重复...

    Struts2 表单 重复提交

    "防止表单重复提交 token"是Struts2提供的一种解决方案,通过在请求中加入一个唯一的token来确保请求的唯一性和一致性。 首先,我们来看如何实现这个机制。在Struts2中,我们可以使用拦截器(Interceptor)来实现...

    Struts2文件上传下载和表单重复提交问题

    在实际应用中,文件上传和下载以及防止表单重复提交是两个常见的需求,同时也是开发者必须掌握的重要技能。 1. **文件上传** 文件上传功能在Struts2中通过`Struts2`提供的插件来实现,主要依赖于`Apache Commons ...

    struts2防止重复提交

    Struts2提供了几种策略来防止表单的重复提交,确保请求的唯一性和事务的一致性。 一、令牌(Token)机制 Struts2的Token插件是防止重复提交的一种常见方法。这里的"Strut2Token"很可能是指这个插件的应用。它的...

    struts2令牌解决页面重复提交问题

    Struts2是一个流行的Java web框架,它...总的来说,Struts2的令牌机制是通过生成和验证令牌来防止重复提交和CSRF攻击的有效方式。开发者应当理解其工作原理,并在需要的地方正确使用,以提高应用程序的安全性和稳定性。

    struts数据回显、模型驱动、防止表单重复提交

    本主题将深入探讨Struts框架中的数据回显、模型驱动以及如何防止表单重复提交,这些都是在实际开发中非常关键且实用的技术点。 1. 数据回显: 数据回显是指在用户提交表单后,服务器端处理数据并返回结果页面时,将...

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

    综上所述,Struts2提供了多种手段来防止表单的重复提交,开发者可以根据具体的应用场景选择合适的方法。同时,Struts2还具备强大的功能扩展性和灵活性,能够满足复杂应用的需求。通过合理的配置和开发实践,可以有效...

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

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

    struts2中防止重复提交的方法

    在Struts2框架中,防止重复提交是一个重要的安全性考量,因为重复提交可能导致数据不一致性和资源浪费。在上述描述中,给出了三种主要方法来解决这个问题: 1) **使用 `&lt;s:token&gt;` 标签** Struts2 提供了一个称为 ...

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

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

Global site tag (gtag.js) - Google Analytics