您的位置:首页 > 编程语言 > Java开发

struts2中使用Token避免表单重复提交

2014-07-17 16:28 387 查看
struts2中使用Token避免表单重复提交:
1.在jsp页面使用标签<s:token/>
2.在拦截器栈中加入Token拦截器

1.reg.jsp页面代码

<body>

 

  <!--会打印出错误信息  -->

  <s:actionerror/>

  <s:debug/><br/>

  <s:form namespace="/token" action="TokenAction_re
g" method="post" >

  <s:token/>

  <s:textfield name="name" label="UserName" />

  <s:submit />

  </s:form>

</body>

2.TokenAction页面代码

package test.token;

import com.opensymphony.xwork2.ActionSupport;

//处理表单重复提交的问题

public class TokenAction extends ActionSupport {
private static final long serialVersionUID = 8674907043033511945L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String reg(){
System.out.println("reg" + name);
return "success";
}
public String toRegView(){
System.out.println("regView");
return "regView";

}

}

3.重点在token.xml页面上

<?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="tokenPkg" namespace="/token" extends="struts-default" >
<action name="TokenAction_*" class="test.token.TokenAction" method="{1}" >
<result name="success">/token/success.jsp</result>
<result name="regView">/token/reg.jsp</result>
<!-- 配置无效令牌的返回页面 -->
<result name="invalid.token">/token/reg.jsp</result>
<!--如果指定了一个拦截器,则会覆盖默认的配置,必须手动指定默认栈 -->
<interceptor-ref name="token">
<!-- 排除 toRegView方法,不让拦截器验证这个方法的令牌有没有提交了-->
<param name="excludeMethods">toRegView</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</action>
</package>

</struts>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: