struts2的限制表单重复提交,除了可以限制提交外,还可以让程序员手动指定表单重复提交后,页面转到哪去!这点非常的方便了web开发!
其实原理也很简单,客户端这边保存表单的值,表单中通过<s:token/>标签多了个hidden域,value就是tokenId,而服务器那边则把tokenId保存在了session中,一次提交后,服务器那变tokenId变了,而客户端保存的没变,2边不一致则不让提交了.
见图吧:
[img]http://dl.iteye.com/upload/attachment/276440/a1b5f519-f825-3044-820f-c5fcf41d248c.jpg[/img]
三步走:
1.submit前,在表单内加上<s:token/>
2.<interceptor-ref name="token"/>拦截器加在action中.,可以设置默认拦截器栈!
3.重复提交后页面转向invalid.token!
其实原理也很简单,客户端这边保存表单的值,表单中通过<s:token/>标签多了个hidden域,value就是tokenId,而服务器那边则把tokenId保存在了session中,一次提交后,服务器那变tokenId变了,而客户端保存的没变,2边不一致则不让提交了.
见图吧:
[img]http://dl.iteye.com/upload/attachment/276440/a1b5f519-f825-3044-820f-c5fcf41d248c.jpg[/img]
三步走:
1.submit前,在表单内加上<s:token/>
2.<interceptor-ref name="token"/>拦截器加在action中.,可以设置默认拦截器栈!
3.重复提交后页面转向invalid.token!