struts2
使用拦截器来检查表单是否重复提交,它采用同步令牌的方式来实现对表单重复提交的判断。
首先需要在表单中使用
<s:token
name="user.token"></s:token>
<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"
>
<
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=
您已经提交了表单,请不要重复提交。
參考來源:http://www.iteye.com/topic/243196
分享到:
相关推荐
防止重复提交的总要解决方案 相信对struts的学者有帮助 大家看看
struts2 防止 重复 提交 和 等待 画面
struts2防止重复登录,分享给大家学习一下。
2) 二是,forward跳转引起的重复提交。当用户将信息提交到服务器,服务器响应采用forward方式调转到下一个页面后,此时地址栏中显示的是上个页面的URL,若刷新当前页面,浏览器会将再次提交用户先前输入的数据,就会...
这里是Struts2 中放置表单重复提交的例子。
struts2防止表单重复提交,利用struts的拦截器tokenSession,轻轻松松解决表单重复提交的问题。 附件为源代码,后台延迟了3秒,可直接在web服务器下部署运行,输入用户名和密码后,多点几次提交按钮,然后看控制台...
客户端跳转时用HttpservletResopse对象的sendRedirect函数实现,服务器端跳转是使用RequestDispather对象的forward方法实现的。这两者之间的区别主要体现在三个方面.......
Struts2 防重复提交Demo 利用Struts2自带的s:token写的防数据重复提交策略.
struts2防止表单重复提交--重定向
【原创】Struts2防止表单重复提交.doc
由于struts2标签的性能不好,项目组决定不使用,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现
JavaEE Struts2利用tokenSession防止重复提交
防止表单重复提交 token eclipse项目
自己写的一个简单地利用struts2实现的登陆项目 另外附有拦截器防止重复提交 希望能对初学者有很所帮助
Struts2自定义拦截器实现防止重复提交
由于struts2标签的性能不好,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现
在点击"提交"后,我们通常会弹出一个提示信息的页面,用户此时有可能会按f5刷新当前提交的action,从而将多个相同的数据保存到了后台数据库,并且造成了潜在的安全危险! 如何避免重复提交呢?
这个示例简单易懂,就是利用token过滤器
本文档主要记录了struts2的属性驱动和模型驱动的区别,以及防止表单重复提交,另外增加了验证信息的正确位置的显示,希望对你有所帮助!