两种方式:

  • 通过注解扫描完成 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. 【洛谷4920】[WC2015] 未来程序(提答题)

    点此看题面 大致题意: 把\(10\)个点的暴力代码和输入数据都给你,让你求出输出数据. 子任务\(1\) 第一个子任务自然是拿来送分用的... 容易发现就是一个快速乘的过程啊. 代码如下: #inc ...

  2. python-8-字符串索引与切片

    前言 python访问字符串的值,可以使用方括号来截取字符串,但切片对原来的值是不会改变,如下: 一.索引 1.索引下标查找 # 1.索引 a = 'ABCDPOM' s = a[0] s2 = a[ ...

  3. pixijs shader贴图扫光效果

    pixijs shader贴图扫光效果 直接贴代码 const app = new PIXI.Application({ transparent: true }); document.body.app ...

  4. RESTful Webservice 和 SOAP Webserivce 对比及区别【转】

    接口抽象 RESTful Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 来抽象所有 Web 系统的服务能力,而不同的是,SOAP 应用都通过定义自己个性化的接口方 ...

  5. 使用yarn来替代npm

    Yarn是由Facebook.Google.Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的 安装yarn ...

  6. 抓包工具 fidder4

    抓包工具 fidder4 fidder4是一款基于windos灵活的抓包工具,可抓取pc端移动端的网络数据包. 安装 安装:fidder 4  下载:https://www.telerik.com/d ...

  7. .NetCore+WebUploader实现大文件分片上传

    项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并. 使用了开源的前台上传插件WebUploader(http://fex.baidu.com/webupload ...

  8. vertx-jersey

    允许在vert.x中创建JAX-RS Jersey资源.   入门 将vertx-jersey依赖项添加到您的项目中 <dependency> <groupId>com.eng ...

  9. J2EE的13种规范

    1.JDBC(Java Databaes Connectivity):JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据 ...

  10. 【maven】父子项目的一般姿势

    一.为什么需要创建maven父子项目. 一般一个业务较多的项目,如果我们做服务拆分的话,有些公共的模块就只能做成jar包了.你将util.constant.model封装成jar包是比较好的,如果da ...