本文介绍下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启动类启动程序,访问测试如下:
满足拦截请求的请求到来的时候过滤器执行了拦截操作~