Java 过滤器 @WebFilter 详解

这篇具有很好参考价值的文章主要介绍了Java 过滤器 @WebFilter 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单介绍

@WebFilter注解是JavaEE中的一种注解,用于标识一个类为过滤器(Filter)。过滤器用于对请求进行过滤和处理,可以在请求到达目标资源之前或之后执行一些操作。
使用**@WebFilter**注解可以将一个类声明为过滤器,并指定过滤器的名称、URL模式、Servlet名称等。

优势

简化配置:不再需要在web.xml文件中手动配置过滤器,而是通过注解直接配置在过滤器类上。
可读性高:注解方式可以将过滤器的相关信息直接写在过滤器类上,使得代码更加简洁和可读。
方便管理:通过注解方式,可以更方便地管理和组织过滤器,减少了配置文件的复杂性。

方法

@WebFilter注解提供了以下属性来配置过滤器:

filterName:指定过滤器的名称,可选属性。
urlPatterns:指定过滤器拦截的URL模式,可以是一个字符串数组,表示多个URL模式。
value:urlPatterns的别名属性,可以用来指定过滤器拦截的URL模式。
servletNames:指定过滤器拦截的Servlet名称,可以是一个字符串数组,表示多个Servlet名称。
dispatcherTypes:指定过滤器的调度类型,可以是DispatcherType枚举类型的数组,默认为REQUEST。
asyncSupported:指定过滤器是否支持异步请求,默认为false。
initParams:指定过滤器的初始化参数,以@WebInitParam注解的数组形式提供。

过滤器原理

当我们使用过滤器时,过滤器会对游览器的请求进行过滤,过滤器可以动态的分为3个部分,1.放行之前的代码,2.放行,3.放行后的代码,这3个部分分别会发挥不同作用

第一部分代码会对游览器请求进行第一次过滤,然后继续执行
第二部分代码就是将游览器请求放行,如果还有过滤器,那么就继续交给下一个过滤器
第三部分代码就是对返回的Web资源再次进行过滤处理
@webfilter注解,java,开发语言

创建过滤器

创建MyFilter,只需要实现Filter接口就行,并且加一个WebFIlter注解
@webfilter注解,java,开发语言

代码演示

Filter的三个阶段就对应着Filter的3个方法,init方法会在Filter创建时调用,doFilter方法会在请求和拦截匹配时调用,destroy方法会在Filter销毁时调用。

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

@WebFilter(initParams = {@WebInitParam(name = "aaa", value = "sss")})
public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("调用01过滤器");
        String aaa = filterConfig.getInitParameter("aaa");
        System.out.println(aaa);
    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("对01 request 进行过滤");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("对01 response 过滤");
    }

    @Override
    public void destroy() {
        System.out.println("01 调用了destroy方法");
    }
}

启动服务器控制台输出
@webfilter注解,java,开发语言
进行拦截时控制台输出
@webfilter注解,java,开发语言
关闭服务器控制台输出 **
@webfilter注解,java,开发语言
到此,我们就成功验证了Filter的生命周期。 filterConfig.getInitParameter()是获取我们注解配置得参数值value。根据上面图解,大家可能会有个疑问为什么会有
02**这个过滤器。那我们接下来就讲一下。

多个过滤器

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

@WebFilter("/*")
public class MyFilter2 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("调用02过滤器");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("对02 request 进行过滤");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("对02 response 过滤");
    }

    @Override
    public void destroy() {
        System.out.println("02 调用了destroy方法");
    }
}

@webfilter注解,java,开发语言

我们可以看见Filter01先进行过滤,然后交给Filter02,然后访问资源,然后Filter02对响应进行过滤,然后Filter01对响应进行过滤。
@webfilter注解,java,开发语言

多个Filter的执行顺序

如果我们是使用@WebFilter进行配置的,那么执行顺序就是字符比较顺序来执行,例如有2个过滤器,一个是AFilter,一个是BFilter,那么AFilter就会先执行。文章来源地址https://www.toymoban.com/news/detail-770961.html

到了这里,关于Java 过滤器 @WebFilter 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Fiddler过滤器 Filters 详解

    目录 前言: 一、 Hosts 过滤 (较常用) 二、Client Process 过滤(客户端进程过滤,通过配置只过滤/不过滤哪些进程的请求。用的不多) 三、Request Headers (根据请求头信息进行过滤。常用) 四、Breakpionts 设置断点(很少用,毕竟可以通过 bpu、bpafter以及改写规则js设置断点)

    2024年02月12日
    浏览(49)
  • Spring Security内置过滤器详解

    相关文章: OAuth2的定义和运行流程 Spring Security OAuth实现Gitee快捷登录 Spring Security OAuth实现GitHub快捷登录 Spring Security的过滤器链机制 Spring Security OAuth Client配置加载源码分析 根据前面的示例,我们已经知道启动时会加载18个过滤器,并且已经知道了请求会匹配到DefaultSecurityF

    2024年02月05日
    浏览(49)
  • gateway之过滤器(Filter)详解

    在Spring Cloud中,过滤器(Filter)是一种关键的组件,用于在微服务架构中处理和转换传入请求以及传出响应。过滤器位于服务网关或代理中,并通过拦截请求和响应流量来提供各种功能。 过滤器在请求的不同生命周期阶段执行特定的操作,例如鉴权、认证、请求转发、限流、

    2024年02月05日
    浏览(44)
  • 设计模式详解-过滤器模式(标准模式)

    在软件开发中,我们常常需要对大量的数据进行筛选或过滤。例如,在一个电子商务网站中,我们可能需要根据用户的喜好、价格区间、商品类型等条件来筛选出符合用户需求的商品列表。为了实现这样的功能,过滤器模式就派上了用场。 过滤器模式是一种结构型设计模式,

    2024年02月12日
    浏览(45)
  • Spring Cloud Gateway 过滤器详解

    Spring Cloud Gateway根据作用范围划分为:GatewayFilter和GlobalFilter 由filter工作流程点,可以知道filter有着非常重要的作用,在“pre”类型的过滤器可以做参数校验、权限校验、流量监控、日志输出、协议转换等,在“post”类型的过滤器中可以做响应内容、响应头的修改,日志的输

    2023年04月08日
    浏览(40)
  • java过滤器(Filter)

    原文链接: java过滤器(Filter – 编程屋 目录 1 过滤器简介 2 Filter详细介绍 3 Filter的用法 3.1 用法1  3.2 用法2 filter也称之为过滤器,它是javaWeb三大组件之一(Servlet程序、Listener监听器、Filter过滤器) 作用: 既可以对请求进行拦截,也可以对响应进行处理。 常见场景: 权限检

    2024年02月20日
    浏览(43)
  • [Java]过滤器(Filter)

    一、什么是过滤器 过滤器是Servlet的高级特性之一,是实现Filter接口的Java类! 过滤器的执行流程:   从上面的图我们可以发现,当浏览器发送请求给服务器的时候, 先执行过滤器,然后才访问Web的资源。服务器响应Response,从Web资源抵达浏览器之前,也会途径过滤器。 过滤

    2024年02月11日
    浏览(43)
  • Java实现布隆过滤器

    背景: 为预防大量黑客故意发起非法的时间查询请求,造成缓存击穿,建议采用布隆过滤器的方法解决。布隆过滤器通过一个很长的二进制向量和一系列随机映射函数(哈希函数)来记录与识别某个数据是否在一个集合中。如果数据不在集合中,能被识别出来,不需要到数据

    2024年02月01日
    浏览(48)
  • Vue2中过滤器的用法详解

    目录 一、过滤器的概念 二、过滤器的使用位置 三、过滤器的分类 1、全局过滤器 2、本地过滤器 四、过滤器应用实例 1、使用过滤器实现省略号 2、使用过滤器处理时间戳 五、Vue3中已废弃过滤器  过滤器 是vue中的一个特性,作用是用于对文本进行格式化的作用。分为全局过

    2024年02月07日
    浏览(41)
  • SpringBoot之过滤器Filter详解及登录校验

    目录 1 快速入门 2.Filter详解 2.1 执行流程 2.2 拦截路径 2.3 过滤器链 3.登录校验-Filter 3.1 分析 3.2 具体流程 3.3 代码实现 什么是Filter? Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能 使用了过滤器

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包