package com.swjd.interceptor.interceptors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import com.swjd.interceptor.entity.User;
// 拦截器使用的场景
// 1.拦截判断会话状态:session
// 2.判断权限操作
// 3.对日志进行收集
// 使用拦截器必须是实现
public class LoginInterceptor implements HandlerInterceptor{
// afterCompletion拦截器的preHandle,postHandle方法执行完成之后,做业务的回调
// 类似finally的使用
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
// TODO Auto-generated method stub
User user = (User)request.getSession().getAttribute("use");
System.out.println("当前账号:"+user.getName());
System.out.println("当前访问地址:"+request.getRequestURI());
}
// postHandle在预处理方法通过后,则进行进一步业务拦截
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
// preHandle预处理方法,主要针对拦截进入业务控制器的请求,做前置业务引导
// 这个方法的返回值直接影响后续方法是否继续拦截做业务操作
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
User user = (User)request.getSession().getAttribute("user");
// 如果会话状态中有当前对象,则通过本次拦截
if (user != null) {
return true;
}
// 如果会话状态异常,拦截请求,到登录页面
request.setAttribute("msg", "<script>alert('去登录')</script>");
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}
}
07-18
07-18
07-18
07-18
07-18
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交