假设:在用户登录系统一段时间没有操作后,session失效,如果这时用户有操作时应该跳转到登录页面要求重新登录。
一般解决方法:
(1)用户首次登录成功时,将用户对象存入session,如 session.setAttibute("loginUser", user);
(2)定义拦截器,对于所有关于某中url请求进行拦截,然后获取loginUser的对象,如果不存在,那么session过期:
import org.springframework.stereotype.Repository;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
@Repository
public class LoginInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Object obj = request.getSession().getAttribute("loginUser");
if(obj==null){
request.getRequestDispatcher("/login.jsp").forward(request, response);
return false;
}
else{
return super.preHandle(request, response, handler);
}
}
}
如果发现session失效,将会跳转到login.jsp要求重新登录。
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/*.html"/>
<bean class="com.xx.xxx.util.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
这样,当有以*.html结尾的请求时,将首先被拦截器LoginInterceptor拦截。
(学习笔记)