基于Struts2實現防止表單重復提交
首先要配置攔截器,攔截器用于控制重復提交內容!其實原理很簡單,就是在表單內生成一個序列,判斷是否為新的序列,如果是之前的序列,則證明是一個重復提交內容!
攔截器配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="common" extends="struts-default" namespace="/common">
<interceptors>
<interceptor-stack name="loginStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="token"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack"></default-interceptor-ref>
<action name="loginAction_*" class="loginAction" method="{1}">
<result name="success">/welcome.jsp</result>
<result name="invalid.token" type="redirect">/index.jsp</result>
<result name="input" type="redirect">/index.jsp</result>
</action>
</package>
</struts>
注意:
如果你不引用:
<interceptor-ref name="defaultStack"></interceptor-ref>
那么你的后臺就不能再接收到參數。
<result name="invalid.token" type="redirect">/index.jsp</result>
<result name="input" type="redirect">/index.jsp</result>
這兩個返回你一定要配置!一個是重復提交的處理,一個是沒有表單標記時的處理!
JSP中增加Struts標簽的引用
<%@taglib prefix="s" uri="/struts-tags" %>
在表單內增加一個標記:
<s:form action="" name="form1" method="post">
<s:token></s:token>
</s:form>
頁面上會看到輸出兩個隱藏域:
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
這就是你當前表單的標記,如果沒有標記,則返回INPUT,如果標記重復就是重復提交返回invalid.token!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
VSCode?配置?Spring?Boot?項目開發(fā)環(huán)境的全過程
兩三年前曾經試過配置Java環(huán)境, 存在不少問題作罷. 最近搜了下相關的文章, 感覺VSCode對Java項目的支持比三年前完善了不少. 今天實際配置了一下環(huán)境, 把自己常用的功能過了一遍, 基本能跑通開發(fā)流程, 做個筆記,需要的朋友可以參考下2024-03-03
SpringBoot2使用JTA組件實現基于JdbcTemplate多數據源事務管理(親測好用)
這篇文章主要介紹了SpringBoot2使用JTA組件實現基于JdbcTemplate多數據源事務管理(親測好用),在Spring?Boot?2.x中,整合了這兩個JTA的實現分別是Atomikos和Bitronix,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-07-07

