首页 > 其他分享 >Filter 过滤器和 Listener 监听器

Filter 过滤器和 Listener 监听器

时间:2024-09-22 13:23:11浏览次数:12  
标签:Listener index Filter jsp 监听器 过滤器 执行 资源

2、开发步骤

3、过滤器执行流程

4、过滤器生命周期

5、过滤器配置问题

6、过滤器链(配置多个过滤器)

二、Listener 监听器

1、ServletContextListener 接口

2、开发步骤


一、Filter 过滤器

============

1、概述


当访问服务器资源时,Filter 过滤器可以将请求拦截下来,完成一些特殊的处理,其作用一般用于完成一些通用的操作,比如:登录验证、统一编码处理、敏感字符过滤等

2、开发步骤


  1. 定义一个类,实现 Filter 接口

  2. 重写方法

  3. 配置拦截路径

  4. web.xml配置

  5. 注解配置

3、过滤器执行流程


  1. 请求先经过过滤器

  2. 经过过滤器过滤后再请求资源

  3. 请求完资源后再回到过滤器

注:两个经过过滤器会对request对象请求数据进行增强,对response对象响应数据进行增强(即过滤数据)

4、过滤器生命周期


  • init()方法:在服务器启动后创建Filter对象,调用init方法,只执行一次,用于加载资源

  • doFilter()方法:每一次请求被拦截请求资源时调用,可执行多次

  • destory()方法:服务器正常关闭时调用distory方法销毁Filter对象,只执行一次,用于释放资源

@WebFilter("/*") //访问所有资源之前都会执行该过滤器

public class myFilter implements Filter {

/*

在服务器启动后创建Filter对象,调用init方法,只执行一次,用于加载资源

*/

public void init(FilterConfig filterConfig) throws ServletException {

System.out.println("初始化");

}

/*

每一次请求被拦截请求资源时调用,可执行多次

*/

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

System.out.println("oneStar");

//放行

filterChain.doFilter(servletRequest,servletResponse);

System.out.println("BackoneStar");

}

/*

服务器正常关闭时调用distory方法销毁Filter对象,只执行一次,用于释放资源

*/

public void destroy() {

System.out.println("销毁");

}

}

5、过滤器配置问题


【1】拦截路径配置

  • 具体资源路径:/index.jsp ==> 只有访问index.jsp资源时,过滤器才会被执行

  • 拦截目录:/user/* ==> 访问/user下的所有资源时,过滤器都会被执行

  • 后缀名拦截:*.jsp ==> 访问所有后缀名问jsp资源时,过滤器都会被执行

  • 拦截所有资源:/* ==> 访问任何资源,过滤器都会被执行

【2】拦截方式的配置

  • 注解配置(设置配置文件的 dispatcherTypes 属性)
  1. REQUEST:默认值,浏览器直接请求资源

  2. FORWARD:转发访问资源

  3. INCLUDE:包含访问资源

  4. ERROR:错误跳转资源

  5. ASYNC:异步访问资源

  • web.xml配置
  1. 配置<dispatcher></dispatcher>标签即可

//浏览器直接请求index.jsp资源时,该过滤器会被执行

//@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.REQUEST)

//只有转发index.jsp资源时,该过滤器才会被执行

//@WebFilter(value = "/index.jsp",dispatcherTypes = DispatcherType.FORWARD)

//浏览器直接请求index.jsp资源,转发index.jsp资源时,该过滤器会被执行

@WebFilter(value = "/index.jsp",dispatcherTypes = {DispatcherType.REQUEST,DispatcherType.FORWARD})

public class myFilter implements Filter {

6、过滤器链(配置多个过滤器)


一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎徽关注公zhong号:编程进阶路 加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

【1】执行顺序

  1. 过滤器1

  2. 过滤器2

  3. 资源执行

  4. 过滤器2

  5. 过滤器1

【2】过滤器先后顺序

  • 注解配置:按照类名的字符串比较规则进行比较,值小的先执行

eg:AFilter 和 BFilter,AFilter 先执行

  • web.xml:<filter-mapping>中谁定义在上面就先执行谁

标签:Listener,index,Filter,jsp,监听器,过滤器,执行,资源
From: https://blog.51cto.com/u_17015008/12080177

相关文章

  • 如何在 ASP.NET Core Web API 方法执行前后 “偷偷“ 作一些 “坏“ 事?初识 ActionFil
    前言:什么是ActionFilterAttribute?ActionFilterAttribute是一种作用于控制器Action方法的特性(Attribute),通过它,你可以在操作执行前后、异常处理时等不同的阶段插入自定义逻辑。比如在执行操作方法之前修改请求参数、记录日志、进行权限验证等操作,在执行操作方法之后发送邮件......
  • 过滤器Filter 与 拦截器Interceptor
    1.Filter过滤器1.1什么是Filter?Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能使用了过滤器之后,要想访问web服务器上的资源,必须先经过滤器,过滤器处理完毕之后,才可以访问对应的资源。......
  • Android NotificationListenerService的实操记录
    文章目录背景介绍主要方法技术细节背景介绍Android在4.3的版本中(即API18)加入了NotificationListenerService,根据SDK的描述(AndroidDeveloper)可以知道,当系统收到新的通知或者通知被删除时,会触发NotificationListenerService的回调方法。同时在Android4.4中新增......
  • 完美解决 Array 方法 (map/filter/reduce) 不按预期工作 的正确解决方法,亲测有效!!!
    完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!亲测有效完美解决Array方法(map/filter/reduce)不按预期工作的正确解决方法,亲测有效!!!报错问题可能出现的原因解决思路解决方法1.确保回调函数正确返回值2.检查数组的数据类型3.使......
  • flowable 流程动态设置监听器(非xml中定义)及发起时从驳回节点开始审批实现
    一、flowable使用代码动态修改监听器1、配置类@ConfigurationpublicclassFlowableGlobListenerConfig{@Lazy@AutowiredprivateTaskStartListenertaskStartListener;@Lazy@AutowiredprivateTaskCompleteListenertaskCompletedListener;......
  • 文件包含_PHP filter伪协议利用方式
    前言本文主要讲解phpfilter伪协议,文件包含漏洞php://filter伪协议是PHP中独有的一种协议,它是一种过滤器,可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据,且在读取和写入之前对数据进行一些过滤,例如base64编码处理、rot13处理等。php://filter伪协......
  • OpenCV(cv::bilateralFilter())
    目录1.函数定义2.双边滤波的工作原理3.应用场景4.示例5.与其他滤波器的比较6.性能优化7.注意事项结论cv::bilateralFilter()是OpenCV中用于图像平滑处理。与传统的线性滤波器(如高斯滤波器)不同,它同时考虑空间邻近性和像素值相似性,从而保留边缘的细节。1.函数定义vo......
  • 过滤器(Filter)
    Filter概述概念:Filter过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。过滤器可以把对资源的请求拦截拦截下来,从而实现一些特殊的功能。过滤器一般完成一些通用的操作,比如:登录校验、统一编码处理、敏感字符处理等。Filter快速入门定义Filter:定义一个类,实......
  • 十三,Spring Boot 中注入 Servlet,Filter,Listener
    十三,SpringBoot中注入Servlet,Filter,Listener@目录十三,SpringBoot中注入Servlet,Filter,Listener1.基本介绍2.第一种方式:使用注解方式注入:Servlet,Filter,Listener2.1使用注解方式注入:Servlet2.2使用注解方式注入:Filter2.3使用注解方式注入:Listener3.第二种方式:使用Regis......
  • 布隆过滤器(Bloom Filter)原理+实战
    布隆过滤器的作用是:可用来判断值可能在集合中和绝对不在集合中介绍布隆过滤器(BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量(位图)和一系列随机映射函数(hash函数)。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远......