struts2之防止表单重复提交

struts.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>

     <!-- 默认的视图主题 -->

   <constant name="struts.ui.theme" value="simple" />


   <!-- struts2在防止表单重复提交的拦截中有2个,分别是:token,tokenSession。tokenSession继承token而来。

         通常情况下,使用tokenSession客户端感觉会比较友好。 -->

   <!-- 如果重复提交,会跳转到error.jsp页面 -->

   <package name="person" namespace="/test" extends="struts-default">

       <action name="token" class="com.ljq.action.PersonAction">

           <interceptor-ref name="defaultStack" />

           <interceptor-ref name="token" />

           <!-- 如果重复提交,跳转到error.jsp页面 -->

           <result name="invalid.token">/WEB-INF/page/error.jsp</result>

           <result>/WEB-INF/page/message.jsp</result>

       </action>

       <action name="tokenSession" class="com.ljq.action.PersonAction">

           <interceptor-ref name="defaultStack" />

           <interceptor-ref name="tokenSession" />

           <!-- 如果重复提交,不会跳转到error.jsp页面 -->

           <result name="invalid.token">/WEB-INF/page/error.jsp</result>

           <result>/WEB-INF/page/message.jsp</result>

       </action>

   </package>

</struts>

publicclass PersonAction {

private String name;

   @SuppressWarnings(
"unchecked")
//观看控制台
//如果token生效则不会在控制台输出name的值,而会输出如下警告: 2011-3-14 20:45:32 com.opensymphony.xwork2.util.logging.commons.CommonsLogger
//warn 警告: Form token EDZ4S96RNDN5VD8B1CQTK6FTHIJUPC66 does not match the session token null.
public String execute() {
       List ls
=new ArrayList();
       ls.add(name);
for (int i =0; i < ls.size(); i++) {
           System.out.println(ls.get(i));
       }
return"success";
   }

public String getName() {
return name;
   }

publicvoid setName(String name) {
this.name = name;
   }
}

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

 <head>


   <title>防止表单重复提交</title>

   <meta http-equiv="pragma" content="no-cache">

   <meta http-equiv="cache-control" content="no-cache">

   <meta http-equiv="expires" content="0">  

 </head>


 <body>

     <!-- 防止表单重复提交,记得在form表单里填上<s:token></s:token>      -->

     <!-- action="token"、action="tokenSession" -->

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

         姓名:<s:textfield name="name"/><s:token></s:token>

         <input type="submit" value="发送"/>

     </s:form>

 </body>

</html>

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
</head>

<body>
<s:property value="name"/><br/>
<%=new Date() %>
</body>
</html>

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path
= request.getContextPath();
String basePath
= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'error.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
     您已经提交了表单,请不要重复提交。
</body>
</html>

你可能感兴趣的:(struts2,配置文件,防治表单重复提交)