• 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();
      }
    }

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

  • 相关阅读:
    联合主键SQL 联合索引
    SQL 对decimal类型转换为int类型
    SQL获取当前时间月份为两位数
    SQL 对结果集进行分组排序过滤重复数据 ROW_NUMBER
    SQL自动流水号函数
    SQL 索引创建
    .Net三层架构
    2016年你应该学习的语言和框架(转)
    MongoDB学习笔记(转)
    干货分享:让你分分钟学会 javascript 闭包(转)
  • 原文地址:https://www.cnblogs.com/OnlyCT/p/7133639.html
Copyright © 2020-2023  润新知