Struts2 防止页面重复提交解决办法

     

     struts2使用拦截器来检查表单是否重复提交,它采用同步令牌的方式来实现对表单重复提交的判断。

首先需要在表单中使用<s:token name="user.token"></s:token>

<s:token>标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到session中。而这个令牌值是随即产生的经过加密的字符序列,不会重复。

其次需要为action配置TokenInterceptor或者TokenSessionStoreInterceptor拦截器。这两个拦截器都已经在struts-default.xml中定义,但没有包含在defaultStack拦截器栈中。

在action中配置拦截器和在重复提交时,将要请求导向的结果视图。

<action name="register" class="com.zhaosoft.action.RegisterAction">

      <!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 -->

      <exception-mapping result="error" exception="java.lang.Exception"/>

<result name="invalid.token">/WEB-INF/pages/register.jsp</result>

      <result name="input">/WEB-INF/pages/register.jsp</result>

      <result name="success">/WEB-INF/pages/success.jsp</result>

      <result name="error">/WEB-INF/pages/error.jsp</result>

      <interceptor-ref name="defaultStack">

      <param name="workflow.excludeMethods">default</param>

      </interceptor-ref>

      <interceptor-ref name="token">

         <param name="excludeMethods">default</param>

      </interceptor-ref>

    </action>

注:excludeMethods指定要排除的方法。

在register.jsp页面中添加action级别的错误信息显示的标签:<s:actionerror/>

在form中添加<s:token>标签:<s:token name="user.token"></s:token>

最好为在资源文件中设置键struts.messages.invalid.token的本地化消息。

struts.messages.invalid.token=您已经提交了表单,请不要重复提交。

TokenSessionStoreInterceptor:使用TokenSessionStoreInterceptor拦截器同样能避免重复提交,TokenSessionStoreInterceptor集成自TokenInterceptor。使用TokenSessionStoreInterceptor将不会输出任何错误信息。如果token无效,请求被导向到invalid.token结果码映射的视图。

配置如下:

<interceptor-ref name="tokenSession">

         <param name="excludeMethods">default</param>

      </interceptor-ref>

Struts2防止重复提交解决方案 立即下载

相关推荐

Struts2防止表单重复提交

造成重复提交主要的两个原因: 1) 一是,服务器处理时间久。当用户在表单中填完信息,点击“提交”按钮后,由于服务器反应时间过长没能及时看到响应信息,或者出于其它目的,再次点击“提交”按钮,从而导致在服务器端接收到两条或多条相同的信息。如果信息需要存储到后台数据库中,如此以来就会产生数据库操作异常提示信息,以至于给用户带来错误信息提示,从而给用户的使用带来不便。 2) 二是,forward跳转引起的重复提交。当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会再次出现表单重复提交的问题。当然你可以选择redirect方式跳转页面,这样就不会出现重复提交的问题;但有时为了达到某种效果或式。者出于网站安全的目的需要隐藏网页跳转,而不得不采用forward跳转方

struts2防止页面重复提交的解决方案

上篇博客说了一下总结struts防止页面提交的背景和struts1防止页面重复提交的解决方案,这篇博客介绍struts2防止页面提交的解决方案。         首先原理是一样的,都是通过产生令牌到页面上,而且存储到session中,当提交页面的时候判断页面传过来的令牌和session中的是否一致,如果一直就继续执行添加,之后删除session中的令牌,当再次提交的时候就会不一致,也就是不能进行重

Q 2355

全双工AI语音交互:从原理到实践,构建实时对话系统

语音交互技术正从传统的半双工模式向全双工模式演进,以实现更自然、实时的对话体验。全双工交互的核心原理在于模拟人类电话通话,允许双方同时发送和接收音频流,这需要流式语音识别(Streaming ASR)和实时自然语言理解(Real-time NLU)技术的深度整合。其技术价值在于显著降低交互延迟,支持智能打断(Barge-in),从而提升人机对话的流畅度和自然度。在应用场景上,全双工技术是智能助手、实时翻译、车载语音及无障碍交互等领域的关键突破。本文以微软MAI Realtime等模型为例,探讨如何利用开源技

weixin_33693070的博客 404

struts2避免重复提交

struts2避免重复提交 struts2使用拦截器来检查表单是否重复提交,它采用同步令牌的方式来实现对表单重复提交的判断。 首先需要在表单中使用&lt;s:token name="user.token"&gt;&lt;/s:token&gt; &lt;s:token&gt;标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到session中。而这个令牌值是随即产生的经过加密的字符序列,不会重...

zhaosoft 171

银河麒麟V10新特性解析:从安装到AI应用的全面指南

本文全面解析银河麒麟V10操作系统的新特性,从安装指南到AI应用开发,详细介绍了其智能调度引擎、神经网络加速和场景化AI工具集等核心功能。通过实战案例展示如何高效配置AI环境、优化性能,并解决常见问题,助力开发者在国产操作系统上实现高效AI开发与应用部署。

seed的博客 302

单节锂电池充电管理芯片应用原理阐述及应用领域

当电池电压超过2.9V时,采用恒流模式对电池充电,充电电流由PROG 管脚和GND之间的电阻RPROG确定。充电电压固定于4.2V,而充电电流可通过一个电阻器进行外部设置当充电电流在达到最终浮充电压之后降至设定值1/10时,WD4054将自动终止充电循环。在待机模式中,WD4054 对 BAT 引脚电压进行监控,只有当 BAT 引脚电压低于再充电阈值电压4.1V时(对应电池容量80%~90%),才会开始新的充电循环,重新对电池进行充电,这就避免了对电池进行不必要的反复充电,有效延长电池的使用寿命。

weixin_41141180的博客 947

struts2-表达重复提交问题

表单重复提交的问题

青树寒鸦的博客 258

VIO实战前传:手把手教你解读Kalibr双目IMU标定报告与参数应用

本文详细解析Kalibr双目IMU联合标定报告的核心参数与应用方法,涵盖重投影误差分析、IMU误差指标解读、关键变换矩阵原理及VINS-Fusion实战配置。通过手把手教学帮助开发者准确理解标定结果,解决VIO算法落地中的参数配置难题,提升视觉惯性里程计的系统稳定性与精度。

weixin_42699679的博客 334

struts2防止重复提交问题

所谓重复提交,就是用户在页面多次点击提交按钮,或者通过不断刷新页面,把已经提交过的数据多次向后台提交。 重复提交对于查询类的功能,问题还不是太大,但是对于新增或是修改类的功能,就有可能凭空的出现很多同样信息的重复数据,从而导致业务功能出现错误。 用一个实例来让大家体会一下重复提交的问题,来实现一个订单新增的功能,订单号一般都是由后台自动生成,前台页面只要传递订购人、订购商品和订购数量等订单的具

Erica_1230的专栏 917

6、业务影响分析(BIA)的数据收集与关键指标评估

本文全面解析了业务影响分析(BIA)的核心内容,包括数据收集、业务流程分析、信息系统与资产清单、人员与供应商依赖、影响声明、关键指标评估(如MTD、RTO、RPO)、威胁建模与风险分析等。通过详细的介绍和图表展示,帮助组织系统性地制定灾难恢复计划,以应对各种潜在风险,确保关键业务流程在灾难发生后能够快速恢复并持续运营。

moss5的博客 375

使用CNN/ResNet实现自动调制识别(RML2018.01a)

本文基于RML2018.01a大型数据集,给出CNN及其变体ResNet的信号识别的实现方式(附代码) 目录一、CNN的代码实现1.1 导入包1.2 数据读取及数据集划分1.3 构建CNN模型1.4 模型训练1.5 测试及模型可视化二、ResNet的代码实现 RML2018.01a数据集信息如下: 数据集来源 Over-the-Air Deep Learning Based Radio Signal Classification 调制类型 19种数字调制方式: 32PSK, 16APSK,

QAQIknow的博客 1万+

struts2表单重复提交问题

struts2重复提交     我们先来说一下什么是重复提交:所谓重复提交,就是用户在页面多次点击提交按钮,或者通过不断刷新页面,把已经提交过的数据多次向后台提交。     重复提交对于查询类的功能,问题还不是太大,但是对于新增或是修改类的功能,就有可能凭空的出现很多同样信息的重复数据,从而导致业务功能出现错误。  一、造成重复提交主要的两个原因:    在我们平时的开发过

悲欢自饮随遇而安的博客 634

SAP-ABAP:SAP数据库视图的创建图文详解

在“短文本”字段中输入视图的描述。在“表/视图”字段中输入要基于的表名。如果视图基于多个表,可以在这里输入主表。点击“表/视图字段”按钮,选择要包含在视图中的字段。如果视图基于多个表,点击“关系”按钮来定义表之间的连接条件。在弹出的窗口中,选择要连接的表,并定义连接条件(例如。

baidu_35680696的博客 974

Struts1防止页面重复提交解决方案

今天介绍struts中如果防止页面重复提交。其实关于防止重复提交的方法有很多种,如果提交之后把按钮变为不可用,利用时间戳来判断两次提交的值是否为一样等。在struts中有令牌这个概念,我是这次面试问题的根本所在,这个问题的提出其实就是想知道我在用struts的时候是不是会用struts提供的令牌来解决这个方式页面重复提交的问题。        所以在这里总结一下struts如果利用令牌来解决页面重

Q 4175

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Struts2学习笔记(十八) 防止表单重复提交

概述 有些时候,我们在想某个网页提交了信息之后,由于某些原因,我们会重复点击提交,或者刷新页面,或者是在提交页面呈现之后点击后退按钮,从而导致这些表单数据被重复提交。在大多数情况下我们是不希望这种情况发生的,我们不可能强迫使用者不这么做,那么我们就只能自己想办法来尽量避免这些情况了。 下面我们来看一个例子: public class HelloServlet extends HttpSe

心静欣 6171

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

struts2 token拦截器防止表单重复提交

>======================================================< 0.struts2的token是什么? struts2的token是用来防止表达的重复提交而定制的拦截器,token只是这个拦截器的别名而已 token有很多种意思如记号,符号等都可称为token。 防止表单重复提交的实现是通过在表单中添加一个隐藏域然后在这个隐藏域中保存一个记号,这个

zyb243380456的专栏 5645

Struts2 中使用token标签防止刷新和后退进行重复提交

在Struts2中使用token标签和内置的拦截器,来防止刷新提交和后退提交非常简单方便。 1. 在需要防止重复提交的jsp中,只需添加一个标签 2. 在对应的struts.xml中进行配置token拦截器,如下代码,红色部分 http://struts.apache.

Magister_Feng的专栏 6743

struts2之防止表单重复提交

struts.xml配置文件 &lt;? xml version = " 1.0 " encoding = " UTF-8

dearbaba_8520的博客 313

Struts2防止form表单重复提交

问题?Struts2防止form表单重复提交 原理: 1.struts2环境 2.拦截器: 在struts-default.xml可以找到这两个拦截器 返回结果invalid.token --> /message.jsp           案例: jsp页面: str

Mr_li13的博客 983

Struts2防止重复提交

一般使用<interceptor-ref name="token"></interceptor-ref>或者<interceptor-ref name="tokenSession"></interceptor-ref>拦截器进行处理。我们举个简单的例子: Jsp页面: 1 <body> 2 <s:actionerror/&...

weixin_30888707的博客 142

struts2防止表单重复提交问题

现在想起来这个问题还是挺恶心的,为了不让大家再有同样的痛苦,故写成BLOG来分享。首先介意大家能用AJAX提交就从项目开始用AJAX的方法提交。当然我现在介绍的不是用AJAX方法,我就是用的普通struts2方法,现在看来非常简单,由以下几步组成:一:在将要提交页面上加它的作用是在每次生成页面生成一个唯一的信息令牌,也就是默认的拦截器能识别出来的;二:在struts.xml

JAVA学习专用BLOG 1714

使用Struts2的token机制和Cookie来防止表单重复提交

Struts2的token机制防止表单重复提交: 首先需要在提交的jsp页面(要使用token机制,必须使用struts2提供的标签库)加上    这段代码,然后在struts.xml里面需要进行如下配置: class="com.xiaoluo.struts2.TokenAction"> /tokenSuccess.jsp

LeefengBoy的博客 1129

Struts2中防止表单重复提交的两种方式

防止表单重复提交,这是个很重要的知识点,而且很有用。当用户提交了一个表单,此时,地址栏显示的是处理这个表单的Action的地址,若此时刷新,则会重新发送一次表单数据,即又进行了一次提交,若这个Action是用来处理用户注册的,那么重复提交会再一次向数据库中插入之前已经插入的数据,这显然不是我们想要的。有两种方法,可以防止表单重复提交,一种是用Action的重定向,一种是用Session Tok

小小海值 197
上一篇: JS中event详解
下一篇: 美丽俏佳人保护眼睛的屏幕设置
QianMagic
博客等级 码龄18年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值