zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    什么是webview
    juqery.fn.extend和jquery.extend
    LeetCode
    5. Longest Palindromic Substring
    42. Trapping Rain Water
    11. Container With Most Water
    621. Task Scheduler
    49. Group Anagrams
    739. Daily Temperatures
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/soficircle/p/7062360.html
Copyright © 2011-2022 走看看