Struts2 s:token/标签 防止表单多次提交

2024-06-22 09:32

本文主要是介绍Struts2 s:token/标签 防止表单多次提交,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<span style="font-size:10px;">1、使用Struts2的表单标签,其中需要增加token标签。如下:
……
Java代码
<%@ taglib uri="/struts-tags" prefix="s" %>  
……  
<s:form action="page1" theme="simple">  
<s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>  
<s:token/>  
<s:reset/><s:submit/>  </s:form> <span style="background-color: rgb(255, 255, 51);"><%@ taglib uri="/struts-tags" prefix="s" %></span>
……
<s:form action="page1" theme="simple">
<s:datetimepicker name="order.date" label="购买日期" toggleType="explode" value="today"/><br/>
<span style="background-color: rgb(255, 255, 51);"><s:token/></span>
<s:reset/><s:submit/></s:form>2、在struts配置文件中增加token拦截器。如下:
Java代码
<?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="lee" extends="struts-default">  
<action name="page1" class="org.bruce.Page1">  
<interceptor-ref name="defaultStack" />  
<interceptor-ref name="token" />  
<result>/page1.jsp</result>  
<result name="invalid.token">/page1error.jsp</result>  
</action>  
</package>  
</struts> <?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><span style="background-color: rgb(255, 255, 102);"><package name="lee" extends="struts-default">
<action name="page1" class="org.bruce.Page1">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="token" />
<result>/page1.jsp</result>
<result name="invalid.token">/page1error.jsp</result>
</action>
</package></span>
</struts>注意,需要name为invaid.token的result。这是当拦截器判断是重复提交的时候,会转向的结果。3、invaid.token页面打印错误信息,一样可以使用struts标签。如下:
<s:actionerror/>理解:
1、JSP使用<s:token/>标签的时候,Struts2会建立一个GUID(全局唯一的字符串)放在session中,并且会成为一个hidden放在form中。
2、token拦截器会判断客户端form提交的token和session中保存的session是否equals。如果equals则执行Action。否则拦截器直接返回invaid.token结果,Action对应的方法也不会执行---------------------------------------------------------------------------------
对于采用token防止表单重复提交的原理我就不用多说了,大家也应该都知道,在这我只介绍在struts2中如何利用标签实现防止表单的重复提交。   首先在表单中加入标签 ,会生成一个隐藏域用于存储系统自动随机生成的token值。然后在action中启用TokenInterceptor,即在struts.xml中加入下面类似代码。
Java代码<span style="background-color: rgb(255, 255, 51);">   1. <action name="register" class="UserAction" method="register"> 2.     <result>register_success.jsp</result> 3.     <result name="input">register.jsp</result> 4.     <result name="invalid.token">register.jsp</result> 5.     <interceptor-ref name="token"></interceptor-ref> 6.     <interceptor-ref name="defaultStack"></interceptor-ref> 7. </action>   </span>   <action name="register" class="UserAction" method="register">
<result>register_success.jsp</result>
<result name="input">register.jsp</result>
<result name="invalid.token">register.jsp</result>
<interceptor-ref name="token"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>其中<result name="invalid.token">register.jsp</result>”是在发生表单重复提交时,返回给用户提示信息的显示页面,同时还需在显示页面中加入 ;“<interceptor-ref name="token"></interceptor-ref>”是启用TokenInterceptor 如果表单重复提交,会提示The form has already been processed or no token was supplied, please try again。修改国际化文件struts.messages.invalid.token 的键值,提供自己定制的错误信息。比如:struts.messages.invalid.token= 您已经提交了表单,请不要重复提交。</span>

这篇关于Struts2 s:token/标签 防止表单多次提交的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083904

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例

HTML5 中的<button>标签用法和特征

《HTML5中的<button>标签用法和特征》在HTML5中,button标签用于定义一个可点击的按钮,它是创建交互式网页的重要元素之一,本文将深入解析HTML5中的button标签,详细介绍其属... 目录引言<button> 标签的基本用法<button> 标签的属性typevaluedisabled

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到