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
  • 相关阅读:
    MySQL 参数- Innodb_File_Per_Table(独立表空间)
    PHP Html 弹窗,本页面弹窗子页面
    ecshop 后台添加 成本价 利润
    MYSQL中的字符串连接符
    dede织梦后台页面及功能修改及精简操作方法
    ecshop 调用其他数据库中的商品
    wamp mysql 创建主从数据库
    mysql 主从同步原理
    mysql 利用触发器(Trigger)让代码更简单
    iOS开发工具——网络封包分析工具Charles
  • 原文地址:https://www.cnblogs.com/soficircle/p/7062360.html
Copyright © 2011-2022 走看看