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); } }
只要参数配置正确,就可以对界面实现拦截啦