springboot中拦截器注册常用的方法是使用一个注册类对拦截器进行注册
需要使用到的注解有:
@Configuration
该注解用于声明该类为一个注册类
@Component
使用该注解将拦截器添加入Spring容器管理
首先拦截器类代码:
@Component
public class IndexInterceptor implements HandlerInterceptor {
@Reference(interfaceClass = UserService.class,version = "1.0.0",check = false,timeout = 15000)//使用了dubbo,可以不加
private UserService userService;
//preHandler方法实在连接到达前进行判断,false为连接拒绝,true为连接通过
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("====拦截器启动====");
boolean b = false;
User user = (User) request.getSession().getAttribute(Constants.SESSION_USER);
if(ObjectUtils.allNull(user)){
b = false;
}else{
User user2= userService.queryUserByPhoneAndPwd(user.getPhone(), user.getLoginPassword());
if(ObjectUtils.allNotNull(user2)){
b = true;
}else{
b=false;
}
}
System.out.println("====拦截器结束----->b="+b+"====");
return b;
}
/*
postHandler用于对拦截信息处理完毕后进行其他操作
需要perHandler方法的返回值为true时才能执行
通肠胃preHandler通过后,就会执行
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
}
/* 需要perHandler方法的返回值为true时才能执行
该方法主要用于清理资源等
它将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行后,才会运行
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
}
}
关于拦截器类的东西就这么多,下面看看注册类如何添加:
/*
注册类中有很多方法,不止能够完成注册拦截器,还有很多其他的东西也可以实现注册
*/
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
/**
* 被拦截的路径
*/
String[] addPathPatterns = {
"/**"
};
/**
* 忽略路径
*/
String[] excludePathPatterns = {
"/index",
"/loan/**"
};
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new IndexInterceptor()).addPathPatterns(addPathPatterns).excludePathPatterns(excludePathPatterns);
}
}