bitmap
问题的产生原因 页面提交给Action去进行业务处理,Action再跳转回前台页面,但这时URL依然是“页面提交给Action的链接”,这时前台刷新一下页面,就变成再次执行了一次提交操作。
解决思路 1,在Action页面中跳转的时候用重定向,可以在struts-config.xml中配置<forward ... redirect=“true”> 不过这种方法会使得request中放置数据丢失; 2,用Token令牌环来实现 提交到Action的时候,进行一系列操作,然后保存一个标志,这时再跳转到前台页面。如果前台页面刷新的话,Action通过查看是否有标志,就能判断用户是刷新还是提交。
Action中操作令牌的方法 一: saveToken(HttpServletRequest request) 创建一个新令牌,并将其保存在当前用户的会话中,如果用户的会话不存在,将首先创建新会话对象 二: isTokenValid(HttpServletRequest request) 判断存储在当前会话中的令牌值和请求参数中的令牌值是否匹配,如果匹配,返回true,否则返回false 。 以下情况返回false: 1,用户的HttpSession不存在 2,用户Session中没有保存令牌值 3,在用户请求参数中没有令牌值 4,存储在用户Session范围内的令牌值和请求参数中 的令牌值不匹配 三:resetToken() 删除保存在Session范围内的令牌值
示例代码
1,进入目标页,如 http://www.bt285.cn ,通过IndexAction转发,其中需要保存令牌:
至此,大功告成!
完整示例请参考附件。
Powered by: .Text and ASP.NET - Copyright © bitmap