SpringBoot的过滤器、拦截器、监听器(补档)

Spring Boot中的自定义过滤器 本文介绍了Spring Boot中的自定义过滤器,包括过滤器的基本概念、创建和注册方法以及常见的应用场景。通过自定义过滤器,我们可以在请求处理的各个阶段进行灵活的操作,从而实现日志记录、身份验证和数据压缩等功能。通过自定义过滤器,可以记录每个请求的详细信息,包括处理时间、请求参数、响应状态等。在处理请求之前,可以检查请求头或Cookie中的身份信息,决定是否允许请求通过。通过在过滤器中对响应数据进行压缩,可以减少传输的数据量,提高传输效率。接下来,我们将创建一个示例过滤器,记录请求的处理时间。 阅读详情

        在Java Web开发中,过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)是三种不同的机制,它们分别用于处理不同类型的任务。


一、过滤器(Filter) 

作用:主要用于对请求或响应进行预处理或后处理,比如权限验证、日志记录等。过滤器可以链式执行,一个请求可能经过多个过滤器。

生命周期方法:

  • init(FilterConfig filterConfig):初始化过滤器。
  • doFilter(ServletRequest request, ServletResponse response, FilterChain chain):执行过滤逻辑。
  • destroy():销毁过滤器时调用。

示例:

@WebFilter(filterName = "myFilter",urlPatterns = {"/hello/*"})
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("Filter 初始化");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("执行过滤操作前...");
        chain.doFilter(request, response);
        System.out.println("执行过滤操作后...");
    }

    @Override
    public void destroy() {
        System.out.println("Filter 销毁");
    }
}

        @WebFilter 是 Servlet 3.0 引入的一个注解,用于简化过滤器的配置过程。通过这个注解,可以直接在过滤器类上声明其映射路径等信息,而无需在 web.xml 中进行配置。然而,为了@WebFilter 注解能够生效,特别是在使用 Spring Boot 的情况下,需要确保在项目启动类上配置 @ServletComponentScan 注解。


二、拦截器(Interceptor)

作用:通常用于Spring框架中,可以在控制器执行之前或之后进行拦截,常用于权限控制、日志记录等。

生命周期方法:

  • preHandle(HttpServletRequest request, HttpServletResponse response, Object handler):在处理器执行之前被调用。
  • postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView):在处理器执行之后,视图渲染之前被调用。
  • afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex):在整个请求完成之后被调用,即视图渲染结束之后。

示例:

创建你的拦截器类:

public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        System.out.println("在请求处理之前进行调用...");
        return true;  // 如果返回false,则请求不会继续
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) {
        System.out.println("在视图渲染之前进行调用...");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        System.out.println("在整个请求结束之后被调用...");
    }
}

在配置类中注册这个拦截器并定义其应用范围:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new MyInterceptor())
                .addPathPatterns("/**") // 应用拦截器到指定路径模式
                .excludePathPatterns("/hello/**"); // 排除某些路径
    }
    //......

}

三、监听器(Listener)

作用:用于监听特定事件的发生,如ServletContext、HttpSession或ServletRequest的创建与销毁等,并对此做出相应的反应。

常见类型:

ServletContextListener:监听Web应用的启动和关闭。
HttpSessionListener:监听session的创建和销毁。
ServletRequestListener:监听request的创建和销毁。


示例代码(以ServletContextListener为例):

@WebListener
public class MyListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Web 应用程序已启动");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Web 应用程序已关闭");
    }
}

四、过滤器(Filter)和拦截器(Interceptor)的区别

        在实际应用中,过滤器(Filter)和拦截器(Interceptor)虽然都能用于处理请求前后的一些逻辑,但它们在多个方面存在差异。了解这些差异有助于选择最适合的技术来解决问题。以下是过滤器与拦截器的主要区别:

1. 技术框架
        过滤器(Filter):属于Servlet规范的一部分,是Java EE标准技术,可以在任何遵循Servlet规范的Web应用程序中使用。
        拦截器(Interceptor):通常用于Spring框架中,特别是Spring MVC,它不是Java EE的标准部分,而是Spring提供的一个功能。
2. 拦截范围
        过滤器:可以拦截所有进入Servlet容器的请求,包括静态资源(如HTML、CSS、JavaScript文件等),以及动态资源(如JSP、Servlet等)。
        拦截器:主要针对Spring MVC框架中的控制器(Controller)进行拦截,不会直接作用于静态资源,除非特别配置。
3. 配置方式
        过滤器:可以通过web.xml文件配置,或者在Servlet 3.0及以上版本中使用注解(@WebFilter)配置。
        拦截器:需要在Spring配置类中通过实现WebMvcConfigurer接口,并重写addInterceptors()方法来注册拦截器。
4. 执行顺序
        过滤器:执行顺序由<filter-mapping>在web.xml中的顺序决定,或基于注解的加载顺序决定。
拦截器:执行顺序取决于在Spring配置类中添加到InterceptorRegistry的顺序。
5. 使用场景
        过滤器:适用于需要对请求进行预处理或后处理的场景,比如权限验证、字符编码转换、日志记录等。
        拦截器:更适合用于Spring MVC项目中,特别是在需要对Controller层的方法调用进行控制时,例如权限校验、参数预处理等。

SpringBoot(13)过滤器+拦截器+监听器 SpringBoot(12)过滤器+拦截器+监听器 阅读详情

相关推荐

【TI毫米波雷达】IWR6843AOPEVM-G与DCA1000EVM实战:从硬件连接到数据流解析

本文详细解析了TI毫米波雷达开发套件IWR6843AOPEVM-G与DCA1000EVM的硬件连接、模式配置及数据流处理全流程。针对官方手册中的常见配置错误,提供了避坑指南和实测验证的正确设置方法,包括开关配置、网络参数等关键步骤。通过mmWave Studio软件配置雷达参数,并深入解析数据采集与处理流程,帮助开发者高效实现毫米波雷达应用开发。

weixin_30653023的博客 368

springboot使用过滤器

过滤器是处于客户端与服务器资源文件之间的一道过滤网,帮助我们过滤一些不符合要求的请求。通常它被用作 Session校验,判断用户权限,如果不符合设定条件,就会被拦截到特殊的地址或者给予特殊的响应。

Microhoo_苏福的博客 9797

手把手复现金蝶云星空V8.1文件上传漏洞(附完整POC与修复方案)

本文深度解析金蝶云星空V8.1文件上传漏洞,提供详细的漏洞复现步骤与完整POC,涵盖技术原理、测试环境搭建及验证流程。同时给出多维防护方案,包括官方补丁部署、临时缓解措施和长期安全加固建议,帮助企业有效防范任意文件上传风险。

weixin_30505225的博客 182

Springboot——过滤器

Springboot——过滤器

梦想的边缘 1万+

AI:Coze、Dify、n8n:三款低代码工具如何选?

Coze、Dify、n8n:三款低代码工具如何选?

Kant2048的博客 2806

【WRF-Urban】WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WUDAPT详解:An Urban Weather, Climate, and Environmental Modeling Infrastructure

WW、forever的博客 497

springboot实现过滤器

注解方式实现过滤器、非注解方式实现过滤器

东风麦芽糖 3897

AgentScope 实战训练营-A2UI的完整实现:从概念到部署全流程

本文详细介绍了如何在AgentScope框架中实现Google的A2UI(Agent-to-Agent UI)协议,构建一个能生成可交互UI的智能体应用。文章涵盖了从环境准备、架构设计、核心代码实现到测试部署的完整流程,包括A2UI协议解析、技能系统、客户端实现、通信机制等核心技术点,适合AI Agent和前端开发人员学习参考。

program哲学 201

Spring boot 中的过滤器

其中一些经常在过滤器的实现中使用。以下是常用的几个方法:1. `doFilter()`: 这是过滤器的核心方法,用于实现过滤器的逻辑。在该方法中,您可以对请求进行预处理、修改请求参数、验证身份、记录日志等操作,然后通过调用`FilterChain`的`doFilter()`方法将请求传递给下一个过滤器或目标资源。在响应返回客户端之前,也可以在此方法中执行一些操作。```java```2. `init()`: `init()`方法在过滤器初始化时调用,用于执行一些初始化操作。

canduecho的专栏 2662

在 SAP Fiori 里玩转 Manage Views:把过滤器与列表布局固化成你的默认工作台

本文介绍了SAP Fiori应用中"Manage Views"功能的核心价值和使用方法。该功能允许用户保存和复用个性化界面设置,包括筛选条件、列布局等,将重复操作简化为一次性配置。文章从技术实现、用户操作和治理建议三个维度展开: 功能本质:View存储的是界面状态而非业务模型,是提升个人生产力的工具 核心价值:固化高频操作,支持默认视图设置,实现"开箱即用"的工作状态 操作指南:详细说明了收藏、重命名、设为默认、自动应用等关键功能 治理建议:区分标准视图、个人视图和公

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 126

CPD (Coherent Point Drift) 算法实现点云配准 C++版

作为和icp并列的点集配准算法cpd为什么没有icp火,等我把整个方案跑完才明白。 首先下载cpd https://github.com/gadomski/cpd 包含的fgt https://github.com/gadomski/fgt 下载到win10的解压后 运行cmake来进行编译 这个时候会提醒缺少eigen3 fgt python 这几个都安装排除后 在build文件夹下会生成vs2017的源码,右键全部生成后在 .\cpd-master\build\Debug 下会生成一个cpd.li

uranus1992的博客 3510

SpringBoot——使用Filter过滤器

springboot中使用过滤器

FlyLikeButterfly的博客 6076

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

springboot过滤器

Filter 引入了过滤链(Filter Chain)的概念,一个 Web 应用可以部署多个 Filter,这些 Filter 会组成一种链式结构,客户端的请求在到达 Servlet 之前会一直在这个链上传递,不同的 Filter 负责对请求/响应做不同的处理。过滤器作用是对客户端发送给 Servlet 的请求以及对 Servlet 返回给客户端的响应做一些定制化的处理,例如校验请求的参数、设置请求/响应的 Header、修改请求/响应的内容等。配置类作用相当于@WebFilter注解。

作为一个长者,有必要记录下人生经验 1761

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

springboot 过滤器

/ 执行一些预处理操作 System . out . println("3Filter==Before the request...");// 调用下一个过滤器 filterChain . doFilter(servletRequest , servletResponse);// 执行一些后处理操作 System . out . println("3Filter==After the request...");} }

溪 1765

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【Spring Boot 过滤器】

在Web开发中,我们常常需要对请求做一些统一的处理,例如:请求日志记录、权限验证、跨域处理等。Spring Boot 中除了可以使用拦截器(Interceptor)和AOP,还可以使用过滤器(Filter)。Filter是 Servlet 规范中的一个组件,用于在请求到达 Servlet 之前或响应返回客户端之前进行预处理或后处理。请求日志记录用户认证与权限检查参数过滤与包装编码设置防止 XSS 攻击等它的核心接口是。

武帝为此的博客 2102

SpringBoot实现过滤器Filter的三种方式

(在启动类配置拦截器,此时自定义过滤器不加注解,为普通类即可) 可以指定过滤器要拦截的url 和 过滤器执行顺序, 但需要代码方式实现.使用 @Configuration + @Bean 配置类,注解声明Bean,交由 Spring 容器管理。使用@Component注解后,可以使用@Order注解保证过滤器执行顺序,@Order 注解用于指定组件的执行顺序,其中值越小的组件优先执行。2、方式②可以保证执行顺序, 但是过滤器不能指定拦截的url , 只能默认拦截全部。Filter 的生命周期。

weixin_43980461的博客 5998

Springboot 过滤器

Springboot的过滤器,在web开发中可以过滤指定的url 比如过拦截掉我们不需要的接口请求,同时也可以修改request和response内容 过滤器的应用场景: 1)过滤敏感词汇(防止sql注入) 2)设置字符编码 3)URL级别的权限访问控制 4)压缩响应信息

大新软件老杨 3814

Spring Boot 过滤器

什么是过滤器? Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。例如实现URL级别的权限控制、过滤敏感词汇、压缩响应信息等一些高级功能。 Filter的执行原理 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求头和请求数据进行检

Pastxu的小屋 1296

Spring Boot 框架下的过滤器

destroy()通过@Component注解将过滤器注册为 Spring Bean,Spring Boot 会自动加载并将其添加到过滤器链中。@Component/*doFilter通过手动注册过滤器,可以指定 URL 匹配规则和执行顺序。/api/*setOrderSpring 提供了一个扩展类,它是对标准过滤器的增强,用于确保在一次请求中只执行一次过滤逻辑(防止重复过滤)。可以通过@Component或注册,方式与标准过滤器一致。

m0_73837751的博客 1971

springboot应用中使用过滤器

在SpringBoot应用中,使用Filter接口来实现过滤器。下面是一个简单的示例,展示了如何在SpringBoot应用中实现一个过滤器:首先,创建一个实现Filter接口的类。// 在请求处理之前执行的逻辑 System . out . println("Before request processing...");// 继续调用过滤器链 chain . doFilter(request , response);

不爱运动的跑者 1879

【SpringBoot】Springboot实现过滤器

在上述示例中,使用了@WebFilter注解将MyFilter类标记为过滤器,并通过urlPatterns拦截全部。在Spring Boot中,过滤器是一种用于对HTTP请求进行预处理和后处理的组件。为了使Spring Boot能够扫描到自定义的过滤器类,需要在启动类上使用。的一部分,它能够在请求进入Web容器之前或返回给客户端之前进行操作。通过实现过滤器,可以对HTTP请求进行一些通用操作,如。其中若用户未登录 ,执行下列的语句:给前端响应。“/user/login”,//移动端登录。

weixin_45618869的博客 2039

监听器、过滤器、拦截器,参考多篇文章整合而成,没有千篇一律的抽象回答!

Component //注意当前类必须受Spring容器控制 //定义拦截器类,实现HandlerInterceptor接口 public class MyInterceptor implements HandlerInterceptor {

m0_46638350的博客 1166

Springboot过滤器和拦截器详解及使用场景

一、过滤器和拦截器的区别 1、过滤器和拦截器触发时机不一样,过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。 2、拦截器可以获取IOC容器中的各个bean,而过滤器就不行,因为拦截器是spring提供并管理的,spring的功能可以被拦截器使用,在拦截器里注入一个service,可以调用业务逻辑。而过滤器是JavaEE标准,只需依赖servlet api ,不需要依赖spring。 3、过滤器的实现基于回调函数.

weixin_50205273的博客 5361

【Spring Boot系列】-Spring Boot过滤器Filter

Tomcat 的 servlet 包下的注解,通过@WebFilter注解可以将指定类声明为过滤器。@WebFilter 属性中没有配置顺序的,其执行顺序和 Filter 类名称字符排序有关,如果需要设置执行顺序,可以在命名的时候注意一下。创建过滤器有三种方法分别:过滤器Filter作用场景 1).防止未登录就进入界面 2). 控制应用编码 3) . 过滤敏感词汇等场景。

记录总结工作过往 3429

SpringBoot中使用Filter(过滤器)

SpringBoot中使用Filter(过滤器)

2202_76007821的博客 3404
上一篇: Java Event 事件
下一篇: @Async注解
快乐吃手手  :  )
博客等级 码龄6年 119粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值