赵华东

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

防止表单重复提交其实就是struts2的一个拦截器的使用;

struts.xml配置文件

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <constant name="struts.ui.theme" value="simple" />
 8     <!-- struts2在防止表单重复提交的拦截中有2个,分别是:token,tokenSession。tokenSession继承token而来。
 9          通常情况下,使用tokenSession客户端感觉会比较友好。 -->
10     <!-- 如果重复提交,会跳转到error.jsp页面 -->
11     <package name="person" namespace="/test" extends="struts-default">
12         <action name="token" class="com.ljq.action.PersonAction">
13             <interceptor-ref name="defaultStack" />
14             <interceptor-ref name="token" />
15             <!-- 如果重复提交,跳转到error.jsp页面 -->
16             <result name="invalid.token">/WEB-INF/page/error.jsp</result> 
17             <result>/WEB-INF/page/message.jsp</result>
18         </action>
19         <action name="tokenSession" class="com.ljq.action.PersonAction">
20             <interceptor-ref name="defaultStack" />
21             <interceptor-ref name="tokenSession" />
22             <!-- 如果重复提交,不会跳转到error.jsp页面 -->
23             <result name="invalid.token">/WEB-INF/page/error.jsp</result> 
24             <result>/WEB-INF/page/message.jsp</result>
25         </action>
26     </package>
27 </struts>

 Action类

 1 package com.action;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 public class PersonAction {
 5     private String name;
 6     public String execute() {
 7         System.out.println(name);
 8         return "success";
 9     }
10     public String getName() {
11         return name;
12     }
13     public void setName(String name) {
14         this.name = name;
15     }
16 }

index.jsp表单页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="/struts-tags" prefix="s"%>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>防止表单重复提交</title>
 7     <meta http-equiv="pragma" content="no-cache">
 8     <meta http-equiv="cache-control" content="no-cache">
 9     <meta http-equiv="expires" content="0">   
10   </head>
11   <body>
12       <!-- 防止表单重复提交,记得在form表单里填上<s:token></s:token> -->
13       <!-- action="token"、action="tokenSession" -->
14       <s:form action="token" namespace="/test" method="post">
15           姓名:<s:textfield name="name"/>
16           <s:token></s:token>
17           <input type="submit" value="发送"/>
18       </s:form>
19   </body>
20 </html>

message.jsp返回成功页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="/struts-tags" prefix="s"%>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>My JSP 'index.jsp' starting page</title>
 7     <meta http-equiv="pragma" content="no-cache">
 8     <meta http-equiv="cache-control" content="no-cache">
 9   </head>
10   <body>
11      <s:property value="name"/>
12   </body>
13 </html>

error.jsp表单重复提交提示页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib uri="/struts-tags" prefix="s" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>My JSP 'error.jsp' starting page</title>
 7     <meta http-equiv="pragma" content="no-cache">
 8     <meta http-equiv="cache-control" content="no-cache">
 9   </head>
10   <body>
11       您已经提交了表单,请不要重复提交。
12   </body>
13 </html>
posted on 2013-11-02 22:52  yunyidata  阅读(222)  评论(0编辑  收藏  举报