struts2
使用拦截器来检查表单是否重复提交,它采用同步令牌的方式来实现对表单重复提交的判断。
首先需要在表单的form标签中使用
<s:token></s:token>用这个标签会在form中产生两个hide的文本域,并且每次加载页面都会产生不同的token ID
<s:token>
标签创建一个新的令牌值,并用你所指定的令牌名把令牌保存到
session
中。而这个令牌值是随即产生的经过加密的字符序列,不会重复。
其次需要为
action
配置
TokenInterceptor
或者
TokenSessionStoreInterceptor
拦截器。这两个拦截器都已经在
struts-default.xml
中定义,但没有包含在
defaultStack
拦截器栈中。
配置实例如下:
<
action
name
=
"register"
class
=
"com.xxx.xxx.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"
> <!--有时候需要配上,否则参数无法绑定到action的属性上-->
<
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></s:token>
最好为在资源文件中设置键
struts.messages.invalid.token
的本地化消息。比如:struts.messages.invalid.token=
您已经提交了表单,请不要重复提交。
分享到:
相关推荐
综上所述,Struts2框架提供了token机制以及灵活的跳转方式配置来解决表单重复提交的问题。开发者在使用时需要注意配置token相关标签和拦截器,并通过设置正确的结果视图跳转类型来防止因刷新页面导致的重复提交。...
在Web开发中,表单重复提交是一个常见的问题,它可能导致数据的不一致性或者服务端处理逻辑的混乱。Struts2框架提供了一种解决方案,即使用Token机制来防止表单的重复提交。以下是对这个主题的详细说明: 1. **表单...
通过以上步骤,我们可以有效地防止Struts2应用中的表单重复提交问题。这个机制不仅提高了用户体验,也避免了因重复提交导致的数据不一致。在实际项目中,根据具体需求,可能还需要结合其他验证机制,如JavaScript的...
在Struts2中,防止重复提交是一个重要的问题,因为它可能导致数据不一致性和服务器资源的浪费。本文将详细介绍如何在Struts2中解决这个问题,以及相关的技术概念。 首先,我们要理解Struts2中的拦截器(Interceptor...
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
下面将详细讲解Struts2令牌解决重复提交问题的过程: 1. **生成令牌**:在Action中,使用`TokenAwareActionSupport`作为基类,这个类实现了`TokenSessionStore`接口,可以方便地获取和验证令牌。在表单展示之前,...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。
在处理用户表单提交时,Struts框架可能会遇到一个常见的问题,即表单重复提交。这种情况通常发生在用户点击提交按钮后,由于网络延迟或其他原因导致请求被多次发送,从而可能对服务器端造成多次数据插入或更新,导致...
下面将详细解释Struts2如何通过重定向来防止表单重复提交。 首先,理解表单重复提交的场景:用户在提交表单后,由于网络延迟或其他原因,可能会无意中多次点击提交按钮。如果服务器没有处理这些重复请求,那么相同...
Struts2是一个流行的Java ...总结来说,Struts2通过Token机制有效地解决了表单重复提交的问题,提高了Web应用的健壮性。通过合理的配置和拦截器的使用,开发者可以轻松地集成这一功能,确保每个表单请求只被处理一次。
Struts2是一个流行的Java Web框架,它为开发者...通过上述步骤,Struts2的`s:token`标签可以帮助开发者有效地防止重复提交,保证Web应用程序的数据一致性。理解并正确使用这个功能,可以提升应用的健壮性和用户体验。
综上所述,Struts框架通过Token机制有效地解决了表单重复提交的问题,提供了更健壮的Web应用安全性。正确理解和应用这一机制对于Java Web开发者来说至关重要。在实际项目中,结合其他防御策略,如CSRF防护,可以...
Struts Token机制是一种防止表单重复提交的有效策略,尤其在处理关键操作时,如金融交易或数据修改,防止用户意外或恶意多次点击提交按钮导致的数据重复性问题。下面将详细介绍Struts Token的工作原理、实现方式及其...
然而,Web应用在处理表单提交时可能会遇到一个问题,即用户在短时间内连续点击提交按钮,导致服务器接收到重复的请求,这被称为表单重复提交。为了解决这个问题,开发者通常会采用Token机制。 Token机制的核心思想...
Struts2提供了几种策略来防止表单的重复提交,确保请求的唯一性和事务的一致性。 一、令牌(Token)机制 Struts2的Token插件是防止重复提交的一种常见方法。这里的"Strut2Token"很可能是指这个插件的应用。它的...
在Web开发中,表单重复提交是一个常见的问题,可能导致数据不一致或服务器资源浪费。Servlet、Struts和SpringMVC是Java Web开发中常用的三大框架,它们各自提供了处理这一问题的策略。以下将详细探讨这三种框架如何...
通过以上三个步骤,我们成功地实现了在Struts中通过Token来防止表单重复提交的功能。这种方法不仅提高了应用的安全性,还提升了用户体验。在实际项目开发过程中,还需要根据具体需求进一步完善和优化这一机制。