一、InterceptorRegister
package com.muen.interceptor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class InterceptorRegister extends WebMvcConfigurerAdapter { private static final Logger logger = LoggerFactory.getLogger(InterceptorRegister.class); @Override public void addInterceptors(InterceptorRegistry registry) { InterceptorRegistration ir = registry.addInterceptor(new MyInterceptor()); /** 拦截所有路径 */ /* ir.addPathPatterns("/**"); */ /** 不拦截获取验证码请求路径 */ /* ir.excludePathPatterns("/getBizId"); */ /** 拦截个人中心 */ ir.addPathPatterns("/Accounts/**"); /** 拦截家庭档案 */ ir.addPathPatterns("/FamilyFile/**"); /** 拦截健康档案 */ ir.addPathPatterns("/HealthyArchives/**"); /** 健康自测 */ ir.addPathPatterns("/HealthTest/**"); /** 体检报告 */ ir.addPathPatterns("/ExamineReport/**"); /** 家庭医生 */ ir.addPathPatterns("/familydoctor/**"); /** 指标趋势 */ ir.addPathPatterns("/canvasManage/**"); super.addInterceptors(registry); } }
二、MyInterceptor
package com.muen.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.muen.util.Constants; import com.muen.util.StringUtils; /** * @author MyPC */ public class MyInterceptor implements HandlerInterceptor { private Logger logger = Logger.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { logger.info("preHandle..."); String path = request.getServletPath(); // 不需要的拦截直接过;不需要拦截的请求配置在这个属性里面加 if (path.matches(Constants.NO_INTERCEPTOR_PATH)) { return true; } else { // TODO:这写你拦截需要干的事儿,比如各种判断等 //没有登录 if (StringUtils.isBlank(request.getSession().getAttribute("personalInfo"))) { if (StringUtils.isBlank(request.getSession().getAttribute("personalBaseInfo"))) { logger.info("没有登录,被拦截了,跳转到登录页面..."); request.getRequestDispatcher("/personal/login").forward(request, response); return false; } else { return true; } } return true; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { logger.info("postHandle..."); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { logger.info("afterCompletion..."); } }
PS:根据项目需求自行修改