??本文介绍下SpringBoot中整合Filter
整合Filter
一、整合方式一
1.创建过滤器
??创建Filter,并且通过@WebFilter注解配置过滤信息,具体如下:
/**
* @program: springboot-01-servlet
* @description: SpringBoot整合Filter的第一种方式
* @author: 波波烤鸭
* @create: 2019-05-11 15:37
*/
@WebFilter(urlPatterns = "/first")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("First过滤器:firstServlet 执行之前");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("First过滤器:firstServlet 执行之后");
}
@Override
public void destroy() {
}
}
2.创建启动类
??启动类和我们前面整合Servlet的第一种方式是一样的。
@SpringBootApplication
//在 springBoot 启动时会扫描@WebServlet,并将该类实例化
@ServletComponentScan()
public class Springboot01ServletApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01ServletApplication.class, args);
}
}
3.启动测试
??通过启动器启动程序测试如下
在这里插入图片描述
在这里插入图片描述
过滤器正常拦截了请求~
二、整合方式二
1.创建过滤器
??创建新的过滤器,不用配置@WebFilter注解,我们同样在启动类中注册过滤器。
/**
* @program: springboot-01-servlet
* @description: SpringBoot整合Filter的第一种方式
* @author: 波波烤鸭
* @create: 2019-05-11 15:37
*/
@WebFilter(urlPatterns = "/first")
public class FirstFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("First过滤器:firstServlet 执行之前");
filterChain.doFilter(servletRequest,servletResponse);
System.out.println("First过滤器:firstServlet 执行之后");
}
@Override
public void destroy() {
}
}
2.创建启动类
??添加获取FilterRegistrationBean对象的方法,并在该方法中注册Filter及配置拦截的请求的URL
/**
* @program: springboot-01-servlet
* @description: SpringBoot整个Servlet的第二种方式的启动类
* @author: 波波烤鸭
* @create: 2019-05-11 15:04
*/
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class,args);
}
@Bean
public ServletRegistrationBean getServletRegistrationBean(){
// 直接获取ServletRegistrationBean对象 并关联自定义的servlet
ServletRegistrationBean bean = new ServletRegistrationBean(new SecondServlet());
// 设置servlet对应的 UrlMapping
bean.addUrlMappings("/second");
return bean;
}
/**
* 获取FilterRegistrationBean 对象
* 注册过滤器并设置拦截的请求地址
* @return
*/
@Bean
public FilterRegistrationBean getFilterRegistrationBean(){
FilterRegistrationBean bean = new FilterRegistrationBean(new SecondFilter());
// 配置要拦截的请求
bean.addUrlPatterns("/second");
return bean;
}
}
3.启动测试
??通过App启动类启动程序,访问测试如下:
在这里插入图片描述
在这里插入图片描述
满足拦截请求的请求到来的时候过滤器执行了拦截操作~