zoukankan      html  css  js  c++  java
  • Spring boot 学习八 Springboot的filter

    一:  传统的javaEE增加Filter是在web.xml中配置,如以下代码:

    <filter>
       <filter-name>TestFilter</filter-name>
        <filter-class>com.cppba.filter.TestFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>TestFilter</filter-name>
      <url-pattern>/*</url-pattern>
      <init-param>
        <param-name>paramName</param-name>
        <param-value>paramValue</param-value>
      </init-param>
    </filter-mapping>

    二: springBoot中的老方法:

      2.1 創建自定义filter

    package com.cppba.filter;
     
    import javax.servlet.*;
    import java.io.IOException;
     
    public class TestFilter 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("TestFilter");
      }
     
      @Override
      public void destroy() {
      }
    }

       2.2  配置类中增加增加一个@bean

    @Bean
     public FilterRegistrationBean testFilterRegistration() {
     
       FilterRegistrationBean registration = new FilterRegistrationBean();
       registration.setFilter(new TestFilter());
       registration.addUrlPatterns("/*");
       registration.addInitParameter("paramName", "paramValue");
       registration.setName("testFilter");
       registration.setOrder(1);
       return registration;
     }

    // 如下,可以配置多个filter, 每个filter对应一个
    FilterRegistrationBean ,对filter进行排序
     @Bean
        public FilterRegistrationBean otherFilterRegistration() {
            FilterRegistrationBean registration = new FilterRegistrationBean();
            registration.setFilter(otherFilter());
            registration.addUrlPatterns("/*");
            registration.addInitParameter("paramName", "paramValue");
            registration.setName("filterDemo4");
            registration.setOrder(2);
            return registration;
        }

    三 springBoot中的老方法:

      3.1 自定义filter

    @Order(1)        //fitler顺序
    //重点
    @WebFilter(filterName = "testFilter1", urlPatterns = "/*")
    public class TestFilterFirst 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("TestFilter1");
        filterChain.doFilter(servletRequest,servletResponse);
      }
     
      @Override
      public void destroy() {
      }
    }

    我们在spring-boot的入口处加上如下注解@ServletComponentScan:

    @SpringBootApplication(scanBasePackages = "com.cppba")
    //重点
    @ServletComponentScan
    public class Application {
      public static void main(String[] args) throws UnknownHostException {
        SpringApplication app = new SpringApplication(Application.class);
        Environment environment = app.run(args).getEnvironment();
      }
    }

     四: WebStatFilter用于采集web-jdbc关联监控的数据

  • 相关阅读:
    微信接口开发之高级篇系列【微信权限封装类WechatAuth】
    微信接口开发之高级篇系列【用户分组接口和生成带参数的二维码】
    微信接口开发之高级篇系列【网页授权获取用户基本信息】
    微信接口开发之高级篇系列【微信JS-SDK】
    微信接口开发之高级篇系列【网页授权详细说明【提供测试账号使用】】
    微信接口开发之高级篇系列【网页授权接口】
    历史SQL语句之一
    盘点2019 | 金融科技发展大事件~
    FinTech终于被正名!央行印发金融科技发展规划
    安装配置开源的laravel项目到本地环境
  • 原文地址:https://www.cnblogs.com/liufei1983/p/8973246.html
Copyright © 2011-2022 走看看