struts2-用token拦截器屏蔽重复提交有关问题
struts2-用token拦截器屏蔽重复提交问题
在服务器端生成一个随机值,然后传给客户端的form中,当客户端提交时,用隐含域提交给服务器端,提交后,
服务器端又把那个随机值清掉了,当你再次提交时,服务器端的那个随机值已经清掉了,所以提交失败
在服务器端生成一个随机值,然后传给客户端的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; } }