首页 > 编程语言 >java springboot过滤器

java springboot过滤器

时间:2024-07-01 16:27:31浏览次数:3  
标签:java springboot FilterRegistrationBean org registration 过滤器 import servlet

在Spring Boot应用中添加自定义过滤器,可以通过实现Filter接口或继承OncePerRequestFilter类来创建过滤器,并使用FilterRegistrationBean将其注册到Spring容器中。

以下是一个简单的示例:

1. 创建过滤器类

        首先,创建一个实现Filter接口的类,或者为了简化单次请求处理逻辑,继承OncePerRequestFilter类。

        下面是一个简单的日志记录过滤器示例:

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

import org.springframework.stereotype.Component;

@Component
public class RequestLoggingFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
        
        System.out.println("Request Log: " + request.getMethod() + " " + request.getRequestURI());
        
        // 继续执行下一个过滤器或请求处理器
        filterChain.doFilter(request, response);
        
        System.out.println("Response Log: " + response.getStatus());
    }
}

2. 注册过滤器

        通常,Spring Boot会自动检测并注册标记为@Component的过滤器,但也可以通过配置类更精确地控制过滤器的注册,比如指定过滤器的URL模式。

        使用FilterRegistrationBean来完成这个任务:

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FilterConfig {

    @Bean
    public FilterRegistrationBean<RequestLoggingFilter> loggingFilterRegistration(RequestLoggingFilter filter) {
        FilterRegistrationBean<RequestLoggingFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(filter);
        // 设置过滤器的URL模式,这里示例为所有请求
        registration.addUrlPatterns("/*");
        // 设置过滤器的顺序,值越小优先级越高
        registration.setOrder(1); 
        return registration;
    }
}

标签:java,springboot,FilterRegistrationBean,org,registration,过滤器,import,servlet
From: https://blog.csdn.net/m0_72642319/article/details/140014520

相关文章

  • java map对象格式化为json对象
    在Java中,将Map对象转换为JSON对象通常是通过使用诸如Jackson、Gson这样的库来完成的。下面是使用这两个库进行转换的示例:一、使用Jackson库        首先,确保项目中已经添加了Jackson的依赖。        Maven示例依赖如下:<dependency><groupId>com.fast......
  • springboot-javax.validation编写自定义校验注解
    引入依赖:<!--jsr303--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><!--hibernatevalidator--><depen......
  • Java 将Markdown文件转换为Word和PDF文档
    Markdown凭借其简洁易用的特性,成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果,例如在专业分享文档或打印成离线使用的纸质版时,就需要将Markdown文件以其他固定的文档格式呈现。通过将Markdown转换为Word和PDF格式,可以得到更多的格式设置,确保跨......
  • Java 自动装箱跟拆箱
    ava的自动装箱和自动拆箱是Java5引入的特性,它们简化了基本数据类型和其对应的包装类之间的转换。下面是关于这两个特性的详细解释:自动装箱(Autoboxing)自动装箱指的是Java编译器自动将基本数据类型转换为其对应的包装类类型。例如,当你将一个int类型的值赋给一个Integer类型的......
  • Java环境配置-JDK15
    准备jdk-15安装包下载网址:https://www.oracle.com/java/technologies/javase/jdk15-archive-downloads.html配置步骤步骤一——安装1、双击运行exe2、选择安装地址,然后点击下一步步骤二——配置环境变量1、复制jdk15目录的路径2、点击此电脑——>属性——>系统——>......
  • 【超简单-Java设计模式2】简单工厂模式
    简单工厂设计模式:概念、Java实现与应用剖析简单工厂模式,作为设计模式中最直观、易懂的一种,被广泛应用于软件开发中,尤其在需要创建一系列相关或相互依赖对象的场景下。本文将深入探讨简单工厂模式的概念,通过Java代码示例展示其实现,并分析其在实际开发中的使用场景与优缺点。......
  • 将 proto 文件转成 java 类
     将proto文件转成java类:将proto文件放在/resource目录下,执行mvnpackage,类会自动生成 <plugin><groupId>com.github.os72</groupId><artifactId>protoc-jar-maven-plugin</artifactId><vers......
  • Java 锁粗化和锁消除
    原文:Java锁消除和锁粗化锁粗化通常情况下,为了保证多线程间的有效并发,会要求每个线程持有锁的时间尽可能短,但是某些情况下,一个程序对同一个锁不间断、高频地请求、同步与释放,会消耗掉一定的系统资源,因为锁的请求、同步与释放本身会带来性能损耗,这样高频的锁请求就反而不利于系......
  • springboot+vue前后端分离项目-vue项目搭建6-文件上传下载
    1.新增com/example/demo/controller/FileController.javapackagecom.example.demo.controller;importcn.hutool.core.io.FileUtil;importcn.hutool.core.util.IdUtil;importcn.hutool.core.util.StrUtil;importcom.example.demo.common.Result;importjakarta.ser......
  • JavaWeb中Session的使用
     Session的工作应用以及工作流程    在浏览器和服务器建立请求访问时,通常会在服务器中开设一个新的JSessionID,用于储存用户的数据,在服务器响应请求后,将JSessionID返回浏览器中,下一次再次进行访问时,浏览器将会直接携带JSessionID进行访问,服务器则直接以此查找Session......