index.jsp
<%@ page contentType="text/html; charset=GBK" language="java"
errorPage=""%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>使用s:token防止重复提交</title>
</head>
<body>
<h3>使用s:token防止重复提交</h3>
<s:form action="pro" method="post">
<!-- 普通表单域 -->
<s:textfield name="book" label="书名" />
<!-- 用于防刷新的token -->
<s:token />
<s:submit value="提交" />
</s:form>
</body>
</html>
action
package action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
public class ProAction extends ActionSupport
{
private String book;
// book的setter和getter方法
public void setBook(String book)
{
this.book = book;
}
public String getBook()
{
return this.book;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="formtaglib2" extends="struts-default" namespace="/">
<!-- 定义名为pro的Action,其实现类为ProAction -->
<action name="pro" class="action.ProAction">
<!-- 使用系统默认的拦截器栈 -->
<interceptor-ref name="defaultStack" />
<!-- 使用防刷新的token拦截器 -->
<interceptor-ref name="token" />
<!-- 如果处理结果返回success,对应/show.jsp视图资源 -->
<result>show.jsp</result>
<!-- 定义重复提交转向的视图,该逻辑视图名必须是invalid.token -->
<result name="invalid.token">refresh.jsp</result>
</action>
</package>
</struts>
refresh.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>防刷新测试</title>
</head>
<body>
您的请求已被处理!请不要刷新页面
</body>
</html>
show.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" pageEncoding="utf-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>防刷新测试</title>
</head>
<body>
用户正常提交,提交的书名为:${requestScope.book}
</body>
</html>