SpringBoot的拦截器

拦截器特性

1).拦截器只能拦截controller相关请求
2).拦截器可以中断请求轨迹
3).请求之前如果该请求配置了拦截器,请求会先经过拦截器,拦截器放心之后执行请求的controller,controller执行完成之后会回到拦截器继续执行拦截器中的代码

拦截器执行顺序


preHandler   预先处理方法:  最先执行方法   返回值布尔类型 true 放行请求,false中断,放行后执行controller内容
  			
postHandler   过程中处理: controller返回之后回到postHandler这个方法执行,执行完成这个方法开始响应浏览器
  			
afterCompletion   最后完成: 当响应结束之后会执行拦截器中这个方法内容

**自定义拦截器 implements HandlerInterceptor **

package com.codegzy.interceptors;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//自定义拦截器
public class Myinterceptor implements HandlerInterceptor {

    private static final Logger log = LoggerFactory.getLogger(Myinterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.debug("=============1============");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        log.debug("==============3=============");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.debug("===================4================");
    }
}

配置拦截器

@Configuration
public class WebMvcConfig  implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
      	registry.addInterceptor("拦截器")
                .addPathPatterns("拦截路径")
                .excludePathPatterns("排除路径")
          	.order("指定执行顺序")    //order用来执行多个拦截器的执行顺序,order书写是自然数,按照自然数顺序执行
    }
}

posted @ 2021-09-08 18:43  code-G  阅读(3205)  评论(0)    收藏  举报