zoukankan      html  css  js  c++  java
  • Spring boot下添加filter

    https://www.cnblogs.com/OnlyCT/p/7133639.html

    *********************************************************

    前言

    传统的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();
      }
    }

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

  • 相关阅读:
    如何设置backBarButtonItem的title和action
    让navigationItem.leftBarButtonItem具有backBarButtonItem的外观样式
    在Xcode中添加空模板
    reason:'CALayer position contains NaN: [160 nan]'
    git的注册与使用:代码的版本控制器
    iOS开发零基础教程之Git的一些常用命令
    iOS开发零基础教程之生成git所需的SSH keys
    iOS开发零基础教程之在终端(Terminal)里安装oh my zsh
    iOS开发零基础教程之Homebrew的安装
    [原]ibatis 数据库时间 插入数据
  • 原文地址:https://www.cnblogs.com/zhao1949/p/9099023.html
Copyright © 2011-2022 走看看