两种方式:

  • 通过注解扫描完成 Filter 组件的注册
  • 通过方法完成 Filter 组件的注册

一、通过注解扫描完成 Filter 组件的注册

1. 编写Filter类

/**
 * SpringBoot整合Filter方式一
 *
 * 传统方式
 * <filter>
 *         <filter-name>FirstFilter</filter-name>
 *         <filter-class>com.linhw.demo.filter.FirstFilter</filter-class>
 * </filter>
 *
 * <filter-mapping>
 *         <filter-name>FirstFilter</filter-name>
 *         <url-pattern>/filter</url-pattern>
 * </filter-mapping>
 */
@WebFilter(filterName="FirstFilter", urlPatterns={"/filter"})
public class FirstFilter implements Filter{

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        System.out.println("FirstFilter 进入......");
        arg2.doFilter(arg0, arg1);
        System.out.println("FirstFilter 离开......");
    }

    @Override
    public void destroy() {

    }

}

2. 编写启动类

@SpringBootApplication
@ServletComponentScan //扫描,并实例化类
public class App3 {

    public static void main(String[] args) {
        SpringApplication.run(App3.class, args);
    }

}

二、通过方法完成 Filter 组件的注册

1. 编写Filter类

//区别于第一种方式,没有使用注解
public class SecondFilter implements Filter{
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
            throws IOException, ServletException {
        System.out.println("SecondFilter 进入......");
        arg2.doFilter(arg0, arg1);
        System.out.println("SecondFilter 离开......");
    }

    @Override
    public void destroy() {

    }
}

2. 编写启动类

@SpringBootApplication
public class App4 {

    public static void main(String[] args) {
        SpringApplication.run(App4.class, args);
    }

    //使用@Bean注解将名为"getFilter"的bean加入到容器
    @Bean
    public FilterRegistrationBean getFilter(){
        FilterRegistrationBean secondFilter = new FilterRegistrationBean(new SecondFilter());
        secondFilter.addUrlPatterns(new String[]{"/filter"});
        return secondFilter;
    }
}

【使用篇二】SpringBoot整合Filter(2)的更多相关文章

  1. springboot整合filter

    新建一个项目 新建Firstfilter类 Firstfliter.java package com.example.filter; import java.io.IOException; impor ...

  2. jackson学习之十(终篇):springboot整合(配置类)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Canal 实战 | 第一篇:SpringBoot 整合 Canal + RabbitMQ 实现监听 MySQL 数据库同步更新 Redis 缓存

    一. Canal 简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同 ...

  4. 02-02:springboot 整合filter

    1.通过注解扫描完成Filter组件的注册 1.1编写filter (添加拦截的servlet) //@WebFilter(filterName = "FirstFilter",u ...

  5. 【SpringBoot】04.SpringBoot整合Filter的两种方式

    SpringBoot整合Filter过滤器的两种方式: 1.通过扫描注解完成Filter组件注册 创建一个类,实现Filter接口,实现doFilter()方法 在该类使用注解@WebFilter,设 ...

  6. springboot(二).springboot整合logback用于日志输出

    springboot整合logback用于日志输出 我们项目的基本框架已经完成,http请求已经可以访问,现在给我们的框架添加日志记录的功能并能将每天的记录记录到文件中去 在这里,我们使用logbac ...

  7. SpringBoot非官方教程 | 第九篇: springboot整合Redis

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot9-redis/ 本文出自方志朋的博客 这篇文章主 ...

  8. SpringBoot从入门到精通二(SpringBoot整合myBatis的两种方式)

    前言 通过上一章的学习,我们已经对SpringBoot有简单的入门,接下来我们深入学习一下SpringBoot,我们知道任何一个网站的数据大多数都是动态的,也就是说数据是从数据库提取出来的,而非静态数 ...

  9. 2018/3/4 Activiti教程之流程部署篇(与Springboot整合版)二

    首先我们来看下Activiti为我们自动生成的这四张用户相关的表 先看下USER表 我已经插入了一些数据,很明显,就是保存用户的信息的 看下GROUP 用户对应的分组信息 MEMBERSHIP 用户和 ...

随机推荐

  1. 2019 SDN阅读作业(2)

    1.过去20年中可编程网络的发展可以分为几个阶段?每个阶段的贡献是什么? 可编程网络的发展可以分为以下三个阶段: (1)主动网络(Active networking,20世纪90年代中期到21世纪初) ...

  2. JAVA基础系列:反射

    1. 定义 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这 种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. ...

  3. Django常用知识整理

    Django 的认识,面试题 1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构.以及全 ...

  4. 【08月20日】A股滚动市净率PB历史新低排名

    2010年01月01日 到 2019年08月20日 之间,滚动市净率历史新低排名. 上市三年以上的公司,2019年08月20日市净率在30以下的公司. 来源:A股滚动市净率(PB)历史新低排名. 1 ...

  5. 【mysql报错】MySQL host is blocked because of many connection errors; 解决方法

    MySQL host is blocked because of many connection errors; 报错 环境 操作系统:Linux 数据库:mysql5.7.27 错误提示 jHost ...

  6. oracle简单查询单词

    单词 释义 select 查询 from 从... where 条件查询 as 别名 not 取反 and 和 or 或者 between...and... 范围取值,包含边界 like 模糊查询 e ...

  7. Python中的passed by assignment与.NET中的passing by reference、passing by value

    Python文档中有一段话: Remember that arguments are passed by assignment in Python. Since assignment just cre ...

  8. 【译】.NET Core 是 .NET 的未来

    为什么要翻译咧,.NET 5 都宣布在 .NET Core 之后发布咯,何不再给 .NET Core 打打鸡血,我这个 .NET Core 的死忠粉. 原文:<.NET Core is the ...

  9. 车位iou计算

    车位检测中,判断多帧图像检测出的车位是否是同一个车位.计算其IOU. 判断一个点是否在一个四边形内 Approach : Let the coordinates of four corners be ...

  10. yii2.0的学习之旅(一)

    一. 通过composer安装yii2.0项目 *本文是根据您已经安装了composer (1)跳转到项目根目录 cd /xxxx/www (2)下载插件 composer global requir ...