• Spring boot下添加filter


    出自:http://www.jb51.net/article/113389.htm

    前言

    传统的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>

    然而spring-boot中很明显不能这样实现,那怎么办呢?看完下面的教程,答案自然知道了。

    老方法(新方法请直接下拉)

    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.在ApplicationConfiguration.java中增加一个@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;
     }

    3.启动项目

    你会看到控制台打印如下代码:

    4.访问项目

    最后我们访问以下http://127.0.0.1:8080/test

    如果你看到控制台打印出:TestFilter

    恭喜你,配置成功!

    2017-04-20 最新spring-boot增加Filter方法

    首先定义一个Filter

    @Order(1)
    //重点
    @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() {
     
      }
    }

    比较核心的代码是自定义类上面加上@WebFilter,其中@Order注解表示执行过滤顺序,值越小,越先执行

    我们在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();
      }
    }

    这种方法效果和上面版本一样,但是用起来更加方便!

  • 相关阅读:
    wireshark 抓包rtp over tcp分析PS/H264负载的过程
    C++虚函数表
    MonoForAndroid 第一章 Android、移动设备和Marketplace 简介
    MonoForAndroid 分享用C#开发Android应用程序
    MonoForAndroid 第二章 Mono For Android 简介
    Java的垃圾回收机制及算法
    如何观测MySQL DDL的进度
    如何开启MySQL coredump
    MongoDB对日志文件进行归档的方法
    winform多线程修改界面lable
  • 原文地址:https://www.cnblogs.com/OnlyCT/p/7133639.html
Copyright © 2020-2023  润新知