浏览器刷新,后退带来问题的解决

一个B/S系统,浏览器的刷新,后退会带来一些我们不希望看到的错误,我们不要这样,不要这样嘛~~

 

 

1. 刷新带来的重复提交

 

问题:例如,要增加一个用户,从addUser.jsp提交form到uerManagerAction,添加成功后返回到showUser.jsp,这时点击刷新,会又添加一次数据。

解决方法:使用Token

uerManagerAction.java
  1. /* 跳转到 “添加管理员” 页面  
  2. * 使用令牌   */  
  3. saveToken(request);   
  4. return mapping.findForward("addAdminPage");  
struts-config.xml
  1. <forward name="addAdminPage" path="/WEB-INF/jsp/user/addAdmin.jsp"/>  

 

在addUser.jsp中,会在

  1. <html:form action="/userManager">  

  下会自动加上

  1. <input type="hidden" name="Token" value="...."/>  

这样一句,他的value是根据ID和系统时间自动生成的

uerManagerAction.java
  1. /* 使用令牌避免重复提交 */  
  2. if(!isTokenValid(request)){    
  3.        request.setAttribute("msg","请不要重复提交!!!");   
  4.        saveToken(request);    
  5.        return mapping.findForward("addAdminPage");   
  6. }else{   
  7.        resetToken(request);   
  8. }  

下面跟上自己的代码就行了。原理就不写了,网上很多........

 

 

2. 后退到不希望用户看到的页面

 

问题:1)用户注销后,点后退键又回到登录后页面

           2)用户填写一个form,提交后,点后退键又到form页面,重复提交

解决方法:

对于问题1),首先登陆后给session里写入username等信息

uerManagerAction.java   登录action
  1. request.getSession().setAttribute("username", name);   
  2. return mapping.findForward("welcome");  
struts-config.xml
  1. <forward name="welcome" path="/WEB-INF/jsp/user/main.jsp" />  
main.jsp
  1.   
  2.     "text/javascript">   
  3.         alert("请先登录");   
  4.         window.location.href="login.jsp";   
  5.        
  6.   

     

uerManagerAction.java   注销action

  1. // 退出登录   
  2. // 清空session,结合main.jsp中的判断,避免退出后点返回又回到登录后界面   
  3. request.getSession().invalidate();   
  4. return mapping.findForward("logout");  

 

对于问题2)

后退带来的重复提交的问题,可以和刷新重复提交结合解决。

只要在填写form的页面禁用缓存,在加上使用Token,就可以比较好的解决

addUser.jsp
  1.   
  2.   

 

ok问题解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值