struts2拦截器页面跳转问题

我用html页面作为主页跳转页面,


<br> location.href=&#39;page_common_index.action&#39;;<br>

自定义一个拦截器,验证session中有没有user,如果有,放行,没有跳转登录页面
Object object = ServletActionContext.getRequest().getSession().getAttribute("user");
if(object == null){
return "login";
}
return invocation.invoke();
问题是我登录成功一次,然后清除session,直接访问主页,发现拦截器不起作用,直接能跳转到主页面,这是怎么回事?如果没有登录过,跳转页面没有问题,登录一次,清除session,跳转失效,清除浏览器缓存再试就可以拦截到,这是怎么回事

5个回答

第一,清除session的代码呢,是否有效;
第二,浏览器的设置,是否有缓存

wo812389882
wo812389882 ServletActionContext.getRequest().getSession().removeAttribute("user");这是清除session的代码,debug调试确实清除了,浏览器缓存是怎么回事,清除了浏览器缓存就没这个问题了,但是我不能让用户每次都自己清除缓存啊
接近 3 年之前 回复

你打个debug,一步步看下,应该是你代码哪里有问题

wo812389882
wo812389882 page_common_index.action这个url第二次访问拦截器不拦截,第一次是拦截的,怎么回事
接近 3 年之前 回复
wo812389882
wo812389882 debug过,发现有时拦截器能进去,有时进不去,而且即使拦截器进去,还没有到执行到放行代码,页面就已经跳转了,百度发现csdn有人碰到类似问题,不知道是struts2的bug,还是什么原因
接近 3 年之前 回复

你怎么清除session的,怀疑是你没有清除成功,所以导致这样的结果。

wo812389882
wo812389882 session确实清除了,debug代码进拦截器,object已经为null了,问题是page_common_index.action第二次访问拦截器失效,第一次没问题的
接近 3 年之前 回复

1.可能是你退出时候的销毁session时候代码有问题,如果你销毁项目时候,tom仍然启动,所以建议手动停止服务2.设置本地浏览器不要缓存,3.你可以换一个浏览器试试.4,clean项目,重新发布,希望能帮助你图片说明

问题解决,是缓存问题,在访问的页面url加个参数,保证唯一,时间戳就可以。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问