过滤和拦截

过滤:

package com.example.demo.filter;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import java.io.IOException;

@Slf4j
@Component
public class MyFilter implements Filter {

  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    System.out.println("开始过滤");
    log.info("filter 初始化");
  }

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("请求处理");
    log.info("filter 处理");
    filterChain.doFilter(servletRequest,servletResponse);
  }

  @Override
  public void destroy() {
    System.out.println("销毁");
    log.info("filter 销毁");
  }
}

  拦截

package com.example.demo.interceptor;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

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

@Component
public class MyInterceptor implements HandlerInterceptor {
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    System.out.println("执行了TestInterceptor的afterCompletion方法");
  }

  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    System.out.println("执行了TestInterceptor的postHandle方法");
  }

  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    System.out.println("开始拦截controller");
    return  false;
  }
}

  

package com.example.demo.interceptor;

import com.example.demo.filter.MyFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.servlet.Filter;

@Configuration
public class MyConfig implements WebMvcConfigurer {
  @Autowired
  MyInterceptor myInterceptor;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(myInterceptor).addPathPatterns("/list");

  }
//  public FilterRegistrationBean filterRegistration(MyFilter myFilter){
//    FilterRegistrationBean<Filter> registration = new FilterRegistrationBean<>();
//    registration.setFilter(myFilter);
//    registration.addUrlPatterns("/find_name/8");
//    registration.setName("MyFilter");
//    registration.setOrder(1);
//    return  registration;
//  }
}

  

posted @ 2021-05-10 18:15  星云惊蛰  阅读(28)  评论(0)    收藏  举报