`

struts2-用token拦截器屏蔽重复提交问题

阅读更多
在服务器端生成一个随机值,然后传给客户端的form中,当客户端提交时,用隐含域提交给服务器端,提交后,
服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败


<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>


	<constant name="struts.devMode" value="true"></constant>
	<package name="test" namespace="/" extends="struts-default">
		
	<action name="input" class="com.hugui.action.InputAction">
			<result>/input.jsp</result>
			
			
		</action>

		<action name="user" class="com.hugui.action.UserAction">
			<result>/addOK.jsp</result>
			
			
			<interceptor-ref name="defaultStack"></interceptor-ref>
			<!-- 在服务器端生成一个随机值,然后传给客户端的form中,当客户端提交时,用隐含域提交给服务器端,提交后,
				服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败,错误是invalid.token -->
			<interceptor-ref name="token"></interceptor-ref>
			<result name="invalid.token">/error.jsp</result>
		</action>

	</package>


</struts>



package com.hugui.action;

import com.opensymphony.xwork2.ActionSupport;

public class InputAction extends ActionSupport {
	
	
	
	@Override
	public String execute() throws Exception {
		
		return super.execute();
	}
	
	

	
}



package com.hugui.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	
	private String name;
	private int age;
	
	@Override
	public String execute() throws Exception {
		System.out.println("a user added!");
		return super.execute();
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

}

分享到:
评论

相关推荐

    Struts拦截器及token拦截器防止重复提交例子源码

    其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。

    JavaEE Struts2利用tokenSession防止重复提交

    4. **验证与处理**:当表单提交后,Struts2的tokenSession拦截器会自动进行token的验证。如果验证通过,业务逻辑正常执行;若失败,则会抛出异常,提示用户重新操作。 在实际应用中,我们还需要考虑一些其他情况,...

    拦截器防止重复提交的设置步骤

    Token 拦截器是 Struts2 提供的一个特殊的拦截器,用于防止重复提交。 Token 机制 Token 机制是 Struts2 的一个安全机制,用于防止重复提交。Token 是一个唯一的标识符,用于标识一个请求。在提交表单时,Struts2 ...

    struts2_token控制刷新重复提交

    3. **验证Token:** 在处理表单提交的Action方法中,Struts2的Token拦截器会自动进行Token验证。如果验证失败(比如因为用户刷新页面),拦截器会抛出一个`TokenException`,你可以捕获这个异常并处理。 ```java ...

    Struts2自定义拦截器实现防止重复提交

    Struts2默认提供了一些拦截器来帮助处理这个问题,但如题目所述,由于性能考虑,项目组决定不使用Struts2的标签,因此需要自定义拦截器来实现防止重复提交的功能。 自定义拦截器的实现主要分为以下几个步骤: 1. *...

    struts-default中拦截器介绍.pdf

    21. `token` 和 `token-session` 拦截器:防止重复提交,通过检查Action中的token,确保每个请求的唯一性。 22. `validation` 拦截器:执行在`xxxAction-validation.xml`中定义的验证规则,进行数据校验。 23. `...

    Struts2防止重复提交解决方案

    本文将深入探讨Struts2防止重复提交的解决方案,包括拦截器的配置、重复提交的原因以及`token`机制的工作原理。 首先,了解Struts2拦截器的基础知识是至关重要的。在Struts2框架中,拦截器是基于AOP(面向切面编程...

    Struts 之旅 - 重复提交 token

    在 Struts 中,"重复提交 token" 是一个重要的概念,用于防止用户意外或恶意地多次提交同一个表单,从而确保数据的一致性和安全性。 在 Web 应用中,重复提交问题可能出现在用户网络不稳定或误操作的情况下,导致同...

    struts2实现的简单登陆 附加拦截器防止重复提交

    在这个"struts2实现的简单登陆 附加拦截器防止重复提交"的项目中,我们将深入探讨Struts2如何处理用户登录以及如何通过拦截器来防止重复提交的问题。 首先,我们来理解一下Struts2的核心概念。Struts2框架基于...

    解决在struts 中可以通过token 来重复提交的问题

    ### 解决Struts中通过Token防止重复提交的问题 在Web应用程序开发中,特别是基于MVC架构的框架如Apache Struts中,确保用户操作的安全性是非常重要的。其中一项常见且重要的安全措施是防止表单的重复提交。本文将...

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

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

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

    1. **配置Action**:在Struts的配置文件(struts.xml或struts.properties)中,为需要防止重复提交的Action添加一个拦截器,通常是`token`和`tokenSession`拦截器。 2. **生成Token**:在Action的准备方法(Prepare...

    struts2中token限制表单多次提交

    当用户尝试重复提交表单时,Struts2会检测到Token已经使用过,因此会抛出异常。你可以捕获这个异常并给出相应的提示,例如: ```java public class MyAction extends ActionSupport { @Override public void ...

    用struts使用Token机制来实现防重复提交

    当用户提交表单时,Struts2的Token拦截器会自动检查Token的有效性。如果Token已经使用过或者不存在于session中,那么`isTokenValid()`会返回`false`,此时可以抛出异常或者返回一个错误页面,提示用户重新尝试。 6...

    自定义拦截器实现防止重复提交

    在本案例中,由于项目组认为Struts2的标签性能不佳,所以选择了自定义拦截器来实现防止重复提交。 首先,我们来看如何创建自定义拦截器。在Struts2中,拦截器是基于AOP(面向切面编程)的概念,可以对Action的调用...

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

    在Struts的配置文件中定义一个Token拦截器,拦截所有需要防止重复提交的Action,然后在拦截器中实现Token的验证逻辑。 通过这种方式,Struts+Token机制可以有效地防止由于用户误操作或者网络延迟造成的表单重复提交...

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

    在Struts配置文件中,为需要防止重复提交的Action添加一个拦截器引用,如`token`或`token-session`。这两个拦截器都可以处理Token,但`token-session`更安全,因为它会将Token存储在会话中,而不仅仅是请求中。 2....

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

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

    sturts2防止表单的重复提交 token

    Struts2为解决这个问题引入了Token机制,确保每个表单提交只被处理一次,避免了由于用户意外刷新页面导致的重复请求。 首先,我们来了解一下什么是表单重复提交问题。当用户填写并提交一个表单后,如果网络延迟或者...

Global site tag (gtag.js) - Google Analytics