`

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;
	}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics