• struts2的防止表单重复提交


    防止表单重复提交其实就是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>
  • 相关阅读:
    【题解】字母 (letter)
    【题解】【原创题目】薇尔莉特
    【题解】Query on a tree III [SP1487] [Bzoj1803]
    11个炫酷的 Linux 终端命令
    A light-weight client-side OAuth library for Java
    android下的异步任务
    OAuth相关知识
    显示单位px、dip以及sp的区别
    Arduino连接SHT10温湿度传感器--返回值不正常解决办法
    blueterm蓝牙超级终端(源码)
  • 原文地址:https://www.cnblogs.com/ruidongjun/p/3404431.html
Copyright © 2020-2023  润新知