首页 > 代码库 > struts2 防止表单的重复提交

struts2 防止表单的重复提交

防止表单重复提交(拦截器)

      1、回顾之前的解决办法:

                           技术分享

 

      2、Struts2中的解决办法:

           2.1、使用重定向

                                  <result type="redirect">/success.jsp</result>

                                     遗留的问题:防不住后退,再提交。

           2.2、使用<s:token/>生成令牌配合token拦截器            

技术分享
 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>struts2中的表单重复提交</title>
 7   </head>
 8   <body>
 9       <%--使用一个struts2的内置标签 s:token --%>
10        <s:form action="login1">
11            <s:token></s:token>
12           <s:textfield name="name" label="用户名" />
13           <s:submit value="提交"/>
14       </s:form>
15   </body>
16 </html>
View Code.jsp

struts.xml 中配置 token拦截器

技术分享
1     <action name="login" class="com.itheima.web.action.Demo1Action" method="login">
2             <!-- 由于默认的拦截器栈中没有令牌的拦截器,所以需要把默认的拦截器栈配上 -->
3             <interceptor-ref name="defaultStack"></interceptor-ref>
4             <!-- 使用struts2提供的一个令牌的拦截器:token -->
5             <interceptor-ref name="token"></interceptor-ref>
6             <!--<result>/success.jsp</result> 请求转发不行 -->
7             <result type="redirect">/success.jsp</result>
8             <result name="invalid.token">/message.jsp</result>
9         </action>
struts.xml

 

                                     点击后退的时候,会提示

                           技术分享

 

                                     配置结果视图

                                     遗留的问题:此种解决方式,是产生了错误之后再告知用户,你错了。

              2.3、使用<s:token/>生成令牌配合tokensession拦截器

                           

技术分享
1         <action name="login1" class="com.itheima.web.action.Demo2Action" method="login">
2             <!-- 由于默认的拦截器栈中没有tokenSession的拦截器,所以需要把默认的拦截器栈配上 -->
3             <interceptor-ref name="defaultStack"></interceptor-ref>
4             <!-- 使用struts2提供的一个tokenSession的拦截器:token -->
5             <interceptor-ref name="tokenSession"></interceptor-ref>
6             <result type="redirect">/success.jsp</result>
7         </action>
struts.xml

 

struts2 防止表单的重复提交