第一种使用注解@WebFilter
创建过滤器
使用@WebFilter声明
package com.example.demo.springboot.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(urlPatterns = "/filter")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
filterChain.doFilter(servletRequest,servletResponse);
}
}
声明servlet扫描
在springboot的启动类上,使用@ServletComponentScan扫描filter所在包(相当于扫描servlet,filter是一种特殊的servlet)
@SpringBootApplication
@ServletComponentScan(basePackages = "org.example.demo.springboot.filter")
public class SpringbootLearningApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootLearningApplication.class, args);
}
}
第二种使用配置类
创建过滤器类
package com.example.demo.springboot.filter;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("hh");
filterChain.doFilter(servletRequest,servletResponse);
}
}
创建配置类
在配置类中注册过滤器,添加过滤路径(注意过滤器的路径是一个*)
package com.example.demo.springboot.config;
import com.example.demo.springboot.filter.MyFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig{
@Bean
public FilterRegistrationBean myFilterRegistrationBean(){
//注册过滤器
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new MyFilter());
//添加过滤路径
filterRegistrationBean.addUrlPatterns("/filter/*");
return filterRegistrationBean;
}
}
---------------------------------
其他springboot相关知识看专栏其他内容