使用注解@Configuration配置拦截器
// 拦截器配置类
@Configuration
//老点的版本继承WebMvcConfigurerAdapter
public class IntercepptorConfig implements WebMvcConfigurer {
/**
* 注入自定义拦截器
*
* @Title: addInterceptors
* @Description:重写这个方法,配置需要拦截的路径
* @author OnlyMate
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 拦截所有请求
registry.addInterceptor(new CoustomerSessionInterceptor()).addPathPatterns("设置拦截的路径");
WebMvcConfigurer.super.addInterceptors(registry);
}
}
拦截器的创建
@Component
public class CoustomerSessionInterceptor implements HandlerInterceptor {
// 请求之前调用
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if(request.getSession().getAttribute("customerSession") == null) {
response.sendRedirect("/house/show/loginView");
return false;
}else {
return true;
}
}
// 请求之后被调用,但是在试图被渲染之前(controller方法调用之后)
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
// 在整个请求处理之后,也就是渲染对应试图之后(主要是进行资源清理工作,如:缓存,垃圾回收)
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}