Ajax请求Session超时时重定向解决方案
我使用的Struts2.3.4,配置的LoginInterceptr拦截器,所有请求除了登录请求外都会先经过拦截器,在拦截器里获取Session信息,判断用户信息是否存在,因为如果Session超时,Session中的信息是会被清除掉的。
所以如果Session已超时,对于非Ajax请求,会直接重定向到登录页面,但是对于Ajax请求则不会,这里给出解决方案,经过测试,绝对可行!当然,如果谁有更好的方法请贴出来:
如果想要Ajax请求在当Session超时的时候也重定向,则需要服务端返回错误信息,在ajax回调函数中做判断,看了看Jquery文档,说是可以定义全局函数,但是不知道那玩意怎么用,试了半天都没试出来!所以只得用如下方法来发Ajax请求:
@Overridepublic String intercept(ActionInvocation invocation) throws Exception {LoginInfoVO login = (LoginInfoVO)ServletActionContext.getRequest().getSession().getAttribute("login");//如果为空,则返回到登录页面if(login == null){ServletActionContext.getResponse().setStatus(501);return "login";}//继续向下执行return invocation.invoke();}