上篇博客说了一下总结struts防止页面提交的背景和struts1防止页面重复提交的解决方案,这篇博客介绍struts2防止页面提交的解决方案。
首先原理是一样的,都是通过产生令牌到页面上,而且存储到session中,当提交页面的时候判断页面传过来的令牌和session中的是否一致,如果一直就继续执行添加,之后删除session中的令牌,当再次提交的时候就会不一致,也就是不能进行重复提交。
关于struts2的防止页面重复提交的实例源代码可以从这个链接下载:http://download.csdn.net/detail/lfsf802/5154071
在struts2中的解决这个问题是用监听器完成的,需要在struts.xml文件中配置如下监听器:
并且需要在添加页面中添加一个input标签:
而在action中无需做任何事情,这点是比struts1的优势所在。Struts2仅仅需要利用监听器来完成令牌的比较工作,随之就解决了页面重复提交问题。