个人信息
![]() |
|
| zhaoshouzhong(zhaoshouzhong) | |
| 状态: | |
| 等级: | |
| 性别:男 | 年龄: 22 |
| 城市: 保密 | |
| 签名: | |
我的相册
最新日志
| ·软件核心竞争力(2006-01-12) |
| ·微内核研究(2006-01-12) |
| ·XPDL2.0正式版发布(2005-11-22) |
| ·基于基线的版本管理和质量控制(2005-11-13) |
| ·计划管理(2005-11-13) |
我的评论
| ·访客167667(访客)/2006-11-03 |
| 小日本真过分,视中.... |
| ·访客921058/2006-07-20 |
| 你好,您研究Pro.... |
| ·访客248125/2006-03-27 |
| 同意 |
| ·访客427256/2006-02-14 |
| 加油哦! 顺便告诉你.... |
我的日历
我的链接
| 2005-08-25 12:11:22 |
| 重复提交和回退解决方案 |
| 网速较慢时,用户可能点击多次提交按钮,照成重复提交。或者提交后点击回退按钮再次提交。这些问题都必须解决。解决方案如下(结合struts): 1、在struts-config.xml文件中,设置页面不缓存: <controller nocache="false" /> 2Action的配置中,凡是有表单录入的,必须设置scope=”request”。默认是session,如果设置为session,则回退时,会把原先输入的值带入,当用户再次提交时会新增一条数据。设置为request,回退时,会自动清空原有值。 3继承MyForwardAction,MyAction类。这两个类实现token处理,防止重复提交。 4登陆后,把用户信息设到session中。Session.setAttribute(“user”,user)。 5登出后,把用户信息从session中删除。Session.removeAttribute (“user”). 6加入过滤器,判断页面中是否存在用户信息。如果不存在返回到登陆页面,以防止非法的进入。这样也保证当一个用户登出后,其他用户利用回退也无法看前一个用户的数据。 MyForwarAction如下: public class MyForwardAction extends ForwardAction { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //设置token saveToken(request); return super.execute(mapping, form, request, response); } } MyAction如下: public abstract class BaseAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub if (isTokenValid(request,true)){ ActionMessages errors = new ActionMessages(); return todo(mapping, form, request, response); }else{ ActionMessages errors = new ActionMessages(); errors.add(Globals.ERROR_KEY,new ActionMessage("submitagain")); saveErrors(request,errors); ActionForward af = mapping.getInputForward(); if (af==null) return mapping.findForward("submitagain"); else return af; } } public abstract ActionForward todo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception ; } 参考: http://www.3lian.com/zl/2004/10-5/221853.htmlhttp://www.knowsky.com/5574.html http://www.theserverside.com/articles/article.tss?l=RedirectAfterPost |
| 标签: 重复提交,回退 |

