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

来源:互联网 发布:网络盒子成人台节目源 编辑:程序博客网 时间:2024/05/18 02:31

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

第一步:使用<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中去。另不要忘记了引入默认的拦截器栈。

原创粉丝点击