package com.saliai.backstage.base; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class CommonInterceptor extends HandlerInterceptorAdapter{ private final Logger log = LoggerFactory.getLogger(CommonInterceptor.class); /** * 拦截器一般在业务处理器处理请求之前被调用 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestUri = request.getRequestURI(); String contextPath = request.getContextPath(); String url = requestUri.substring(contextPath.length()); log.info("requestUri:"+requestUri);//请求的url log.info("contextPath:"+contextPath);//访问的项目 log.info("url:"+url); String userAccount = (String)request.getSession().getAttribute("userAccount"); if(userAccount == null){ log.info("Interceptor:跳转到login页面!"); if(requestUri.contains("/initPage")) { response.sendRedirect(request.getContextPath());//这种是直接刷新地址栏的地址 }else{ request.getRequestDispatcher("/WEB-INF/404.jsp").forward(request, response); } // request.getRequestDispatcher("/WEB-INF/view/login.jsp").forward(request, response);//这种是直接跳转到登录页面,但地址栏部刷新 return false; }else return true; } /** * 在业务处理器处理请求执行完成后,生成视图之前执行的动作 * 可在modelAndView中加入一些自己想要保存的数据,会话失效时间,非法请求时间等 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } /** * 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 * * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion() */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
拦截器配置
最新推荐文章于 2024-05-22 13:32:47 发布