前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot过滤器的简单使用

SpringBoot过滤器的简单使用

作者头像
止术
发布2020-09-15 10:12:39
4870
发布2020-09-15 10:12:39
举报
文章被收录于专栏:求道

SpringBoot过滤器的简单使用

Filter是Servlet的加强版,能够在请求前后进行处理!可以使请求在执行资源前预先处理数据,也可以在处理资源后进行处理!

一、SpringBoot使用Servlet Filter

filter是依赖于Servlet容器的,所以在SpringBoot使用Filter的时候也需要实现javax.servlet.Filter

二、项目演示

pom文件

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.filter</groupId>
    <artifactId>test-filter</artifactId>
    <version>1.0-SNAPSHOT</version>



    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.8.RELEASE</version>
    </parent>


    <dependencies>
        <!--springboot-web启动-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--springboot aop支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
代码语言:javascript
复制
package com.demo.filter;

import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * 自定义拦截器
 * @author huangfu
 */
@Component
@WebFilter(filterName = "MyFilter",urlPatterns = {"/*"})
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("-----------------执行过滤器---------------------");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

代码语言:javascript
复制
@WebFilter(filterName = "MyFilter",urlPatterns = {"/*"})

filterName:指定过滤器的名字

urlPatterns:指定拦截的路径 *匹配全部

三、多个过滤器的顺序问题

单项目中出现多个过滤器的情况下,如果对顺序有严格的要求,我们可以手动指定顺序大小

@Order(int level):数值越小,越优先执行!

过滤器1开发

代码语言:javascript
复制
package com.demo.filter;

import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * 自定义拦截器
 * @author huangfu
 */
@Component
@WebFilter(filterName = "MyFilter",urlPatterns = {"/*"})
@Order(1)
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("-----------------执行过滤器1---------------------");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

过滤器2开发

代码语言:javascript
复制
package com.demo.filter;


import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * @author huangfu
 */
@Component
@WebFilter(filterName = "MyFilter2",urlPatterns = {"/*"})
@Order(2)
public class MyFilter2 implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("-----------执行过滤器2----------------");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

结果:过滤器1优先执行

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA程序狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot过滤器的简单使用
    • 一、SpringBoot使用Servlet Filter
      • 二、项目演示
        • pom文件
      • 三、多个过滤器的顺序问题
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档