- 简单方式: 继承Filter 以及 添加@component注解即可
package com.imooc.demo.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
/**
* 第一种方式:
* springboot中做过滤器 , 直接继承filter , 添加component注解即可
* 第二种方式 -> 如 MyFilter2 与 config包下 . 将第三方过滤器添加入过滤器链中
*
* 过滤器的缺点:
* 1. 只能获取request 与 response对象 . 并不能获取要访问的类与方法.
* 2. 因为继承的filter是servlet的 , 并不是spring的
* 3. 可以使用spring提供的拦截器 intercept
*/
@Component
public class MyFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init...");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤器....");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("毁灭中...");
}
}
2.1. 可配置方式.,通过使用@configuration注解实现
package com.imooc.demo.filter;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
/**
*
*/
public class MyFilter2 implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("init...");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("过滤器....");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("毁灭中...");
}
}
2.2 webconfig配置对象
package com.imooc.demo.filter.config;
import com.imooc.demo.filter.MyFilter2;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class Webconfig {
/**
* 配置自定义过滤器或者第三方提供的过滤器
* @return
*/
@Bean
public FilterRegistrationBean MyFilter() {
// 此对象效果等同于 web.xml中的过滤器的配置
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
MyFilter2 myFilter2 = new MyFilter2();
filterRegistrationBean.setFilter(myFilter2);
// 指定过滤url
List<String> urls = new ArrayList<>();
urls.add("/*");
filterRegistrationBean.setUrlPatterns(urls);
return filterRegistrationBean;
}
}