您的位置:首页 > 编程语言 > Java开发

struts中拦截器防止表单重复提交

2012-10-20 22:35 344 查看
由于某些原因,用户在进行类似表单提交的操作后,以为表单未被提交,会进行多次的重复提交。为了避免用户多次提交给服务器带来负荷。我们会对表单提交这样的操作进行一些处理,以告诉用户不要重复提交。

第一步:使用<s:token></s:token>标签:

登录页面中的关键技术就是使用了标签库中的<s:token></s:token>标签,它的作用就是在用户访问此页面时会生成一个sessionId,在提交时会服务器会据此验证表单是否已提交,提交到的Action便能配置TokenInterceptor拦截器验证表单是否重复提交。

第二步:配置XML文件

<resultname="success">/success.jsp</result>

<!-- 表单重复提交时进入的视图 -->
<resultname="invalid.token">/subError.jsp</result>

<!-- 防止表单重复提交的拦截器 -->
<interceptor-refname="token"></interceptor-ref>

<interceptor-refname="defaultStack"></interceptor-ref> //引用默认的拦截器

此Action下,我们配置了token拦截器,另注意到在此Action下我们还配置了一个“invalid.token”result,提交时服务器如果根据token标签产生的sessionId判断出表单已提交,它则返回invalid.token指向的视图。比如这里,如果重复提交则会转到.../subError.jsp中去。另不要忘记了引入默认的拦截器栈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: