基于Struts2實(shí)現(xiàn)防止表單重復(fù)提交
首先要配置攔截器,攔截器用于控制重復(fù)提交內(nèi)容!其實(shí)原理很簡(jiǎn)單,就是在表單內(nèi)生成一個(gè)序列,判斷是否為新的序列,如果是之前的序列,則證明是一個(gè)重復(fù)提交內(nèi)容!
攔截器配置如下:
<?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>
那么你的后臺(tái)就不能再接收到參數(shù)。
<result name="invalid.token" type="redirect">/index.jsp</result>
<result name="input" type="redirect">/index.jsp</result>
這兩個(gè)返回你一定要配置!一個(gè)是重復(fù)提交的處理,一個(gè)是沒有表單標(biāo)記時(shí)的處理!
JSP中增加Struts標(biāo)簽的引用
<%@taglib prefix="s" uri="/struts-tags" %>
在表單內(nèi)增加一個(gè)標(biāo)記:
<s:form action="" name="form1" method="post">
<s:token></s:token>
</s:form>
頁(yè)面上會(huì)看到輸出兩個(gè)隱藏域:
<input type="hidden" name="struts.token.name" value="struts.token"/>
<input type="hidden" name="struts.token" value="BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR"/>
這就是你當(dāng)前表單的標(biāo)記,如果沒有標(biāo)記,則返回INPUT,如果標(biāo)記重復(fù)就是重復(fù)提交返回invalid.token!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 簡(jiǎn)單談?wù)凷truts動(dòng)態(tài)表單(DynamicForm)
- Struts2中接收表單數(shù)據(jù)的三種驅(qū)動(dòng)方式
- J2EE中的struts2表單細(xì)節(jié)處理
- 詳解struts2的token機(jī)制和cookie來(lái)防止表單重復(fù)提交
- Struts2中Action三種接收參數(shù)形式與簡(jiǎn)單的表單驗(yàn)證功能
- Java的Struts框架中登陸功能的實(shí)現(xiàn)和表單處理器的使用
- 通過Ajax兩種方式講解Struts2接收數(shù)組表單的方法
- struts2中一個(gè)表單中提交多個(gè)請(qǐng)求的例子(多個(gè)提交按鈕)
相關(guān)文章
Mybatis中的resultType和resultMap使用
這篇文章主要介紹了Mybatis中的resultType和resultMap使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié)
這篇文章主要介紹了Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法
這篇文章主要介紹了詳細(xì)分析Java并發(fā)集合LinkedBlockingQueue的用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2018-04-04
基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目
這篇文章主要介紹了基于jenkins實(shí)現(xiàn)發(fā)布node.js項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
Servlet和Filter之間的區(qū)別與聯(lián)系
這篇文章主要介紹了Servlet和Filter之間的區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下2016-05-05
JAVA實(shí)現(xiàn)圖書管理系統(tǒng)項(xiàng)目
相信每一個(gè)學(xué)生學(xué)編程的時(shí)候,應(yīng)該都會(huì)寫一個(gè)小項(xiàng)目——圖書管理系統(tǒng)。為什么這么說呢?我認(rèn)為一個(gè)學(xué)校的氛圍很大一部分可以從圖書館的氛圍看出來(lái),而圖書管理系統(tǒng)這個(gè)不大不小的項(xiàng)目,接觸的多,也比較熟悉,不會(huì)有陌生感,能夠練手,又有些難度,所以我的小項(xiàng)目也來(lái)了2021-10-10

