• struts2 token 防止表单重复提交


    1、jsp页面  输入框,提交按钮

     1 <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
     2 <%@ taglib uri="/struts-tags" prefix="s" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>Insert title here</title>
     7     </head>
     8     <body>
     9         <s:form action="User_login" namespace="/login">
    10             <!---token标签--->
    11             <s:token></s:token>
    12 <!--         <!---用于显示action的错误,因为设置的是拦截到后再次返回此页,所以设置了这个标签--> 
    13 <!--         <s:actionerror/> -->
    14             
    15             <s:textfield name="username" label="用户名"></s:textfield>
    16             <s:submit label="提交"></s:submit>
    17         </s:form>
    18     </body>
    19 </html>

    2、struts.xml

    动作类成功执行后通过转发的方式跳转到success.jsp页面。

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
     3 <struts>
     4      <constant name="struts.i18n.encoding" value="utf-8"/>
     5      <package name="default" namespace="" extends="struts-default">
     6         <global-results>
     7           <result name="error">/error.jsp</result>
     8         </global-results>
     9       </package>
    10   
    11   <package name="users" extends="default" namespace="/login">
    12     <action name="User_login" class="cn.gs.ly.UserAction" method="login">
    13 
    14       <!--使用默认拦截器-->
    15       <interceptor-ref name="defaultStack"></interceptor-ref>
    16       <!--使用token拦截器-->
    17 <!--  <interceptor-ref name="token"></interceptor-ref>  -->
    18       <!--使用tokenSession拦截器-->
    19       <interceptor-ref name="tokenSession"></interceptor-ref> 
    20       <!--拦截到后的输出界面-->
    21       <result name="invalid.token">/message.jsp</result>
    22       
    23       <result name="success">/User_login_success.jsp</result>
    24       <result name="failure">/index.jsp</result>
    25     </action>
    26   </package>
    27 
    28 </struts> 

    3、UserAction类

    每次用户提交表单后,输出表单提交的提示。

     1 package cn.gs.ly;
     2 
     3 import com.opensymphony.xwork2.ActionSupport;
     4 
     5 public class UserAction extends ActionSupport {
     6     private String username;
     7     private String token;
     8     
     9     public String getUsername(){
    10         return username;    
    11     }
    12     public void setUsername(String username){
    13         this.username=username;
    14     }            
    15     public String getToken() {
    16         return token;
    17     }
    18     public void setToken(String token) {
    19         this.token = token;
    20     }
    21     
    22     
    23     public String login(){
    24         System.out.println(username+"表单已提交");
    25         return SUCCESS;
    26     }
    27     
    28     
    29 }

    登陆成功跳  success.jsp

     1 <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
     2 <!DOCTYPE html>
     3 <html>
     4     <head>
     5         <title>Insert title here</title>
     6     </head>
     7     <body>
     8         <h2>登陆成功,这是登陆成功页面</h2>
     9     </body>
    10 </html>

    重复提交跳  message.jsp  

    <%@ page language="java" contentType="text/html" pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE html>
    <html>
        <head>
            <title>Insert title here</title>
        </head>
        <body>         
            <h3>请勿重复提交</h3>
            <!---用于显示action的错误,因为设置的是拦截到后再次返回此页,所以设置了这个标签-->
            <s:actionerror/>
        </body>
    </html>

    登陆失败跳  error.jsp

     1 <%@ page language="java" import="java.util.*" isErrorPage="true"%>
     2 <%@ page contentType="text/html; charset=utf-8" %>
     3 <%@ taglib uri="/struts-tags" prefix="s"%>
     4 <%
     5     String path = request.getContextPath();
     6 %>
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>  
    11     <title>page</title>
    12   </head>
    13   <body>
    14     <center>
    15       <h1>出错了!</h1>
    16       <hr>
    17                         异常信息:<s:property value="exception"/><br>
    18         <a href="<%=path%>/index.jsp">返回首页</a>    
    19     </center>
    20   </body>
    21 </html>
  • 相关阅读:
    ES6模块开发+单文件组件
    Vue路由学习
    Vuex学习
    Vue组件
    Vue事件处理
    Git下载前后端代码步骤
    小黑记事本
    简单计算器
    ubuntu的基础命令
    拓扑排序以及求解关键路径
  • 原文地址:https://www.cnblogs.com/liuyangv/p/8376718.html
Copyright © 2020-2023  润新知