Filter 和 Listener

Filter

表示过滤器。是JavaWeb三大组件(Servlet、Filter、Listener)之一。

过滤器可以把对资源的请求 拦截 下来。浏览器可以访问服务器上所有的资源,而在访问到这些资源之前可以使用过滤器拦截下来,也就是说在访问资源之前会先经过Filter。如下图:

开发步骤:

1.定义类,实现Filter接口,并重写其所有方法

public class FilterDemo implements Filter{
    public void inint(FilterConfig filterConfig)
    public void doFilter(ServletRequest request,ServletResponse response)
    public void destroy(){}
}

2.配置Filter拦截资源的路径:在类上定义@WebFilter注解。注解的value属性值/*表示拦截所有的资源。

@WebFilter("/*")
public class FilterDemo implements Filter{

3.在diFilter方法中输出一句话并放行

public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain){
    System.out.println("filter 被执行了");
    //放行
    chain.doFilter(req,resp);
}

过滤器的生命周期:

1.初始化init方法 

2.过滤请求doFilter方法 

3.销毁destroy方法

Filter四种拦截路径配置:

拦截路径有如下四种配置方式:
拦截具体的资源: /index.html :只有访问 index.html 时才会被拦截
目录拦截: /user/* :访问 /user 下的所有资源,都会被拦截
后缀名拦截: *.html :访问后缀名为 html 的资源,都会被拦截
拦截所有: /* :访问所有资源,都会被拦截

Listener

 表示监听器。

用于监听 ServletContext HttpSession ServletRequest 等对象的创建、销毁等事件。它可以帮助我们跟踪Web 应用的状态和行为。
监听器在 Java Web 应用中被用于追踪在线用户数量、加载初始化数据、清理资源、进行日志记录以及进行应用统计。其主要类型包括ServletContextListener ,用于监听应用上下文的创建和销毁;
HttpSessionListener ,负责监听会话的创建和销毁;以及 ServletRequestListener ,监听请求的创建和销毁。此外,还有如HttpSessionAttributeListener ServletContextAttributeListener 等其他监听器,专门用于监控属性的变化。
JavaWeb提供了8个监听器:

其中ServletContextListener接触较多,它是用来监听ServletContext对象的创建和销毁。

此接口有两个方法:

void contextInitialized (ServletContextEvent sce) :ServletContext对象被创建了会自动执行的方法

void contextDestroyed(ServletContextEvent sce):ServletContext对象被销毁时会自动执行的方法

 使用:

定义一个类,实现ServletContextListener接口

重写所有抽象方法

使用@WebListener进行配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/118105.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android性能优化--Perfetto用SQL性能分析

Android性能优化–Perfetto用SQL性能分析 文章目录 Android性能优化--Perfetto用SQL性能分析介绍Perfetto SQL 基础使用 Perfetto SQL 进行性能分析总结 本文首发地址 https://blog.csdn.net/CSqingchen/article/details/134167741 最新更新地址 https://gitee.com/chenjim/che…

什么是本地存储的有效期?

前言 本地存储是一种在Web开发中常用的客户端存储数据的方式,它可以让网页应用程序在用户的浏览器中存储和检索数据,而无需依赖服务器来保存信息。本地存储的有效期是指数据存储在用户的设备上可以被访问和保留的时间段。在本地存储中,有两种…

嵌入式发展历史

MPU、MCU、SoC、Application Processors 在一个电子系统中,处理器占据最重要的位置,被称为中央处理器单元(CPU:Central Processing Unit)。它从IO设备读取数据,处理,然后输出。 CPU的发展历史…

【RabbitMQ】RabbitMQ 消息的可靠性 —— 生产者和消费者消息的确认,消息的持久化以及消费失败的重试机制

文章目录 前言:消息的可靠性问题一、生产者消息的确认1.1 生产者确认机制1.2 实现生产者消息的确认1.3 验证生产者消息的确认 二、消息的持久化2.1 演示消息的丢失2.2 声明持久化的交换机和队列2.3 发送持久化的消息 三、消费者消息的确认3.1 配置消费者消息确认3.2…

系统设计中的缓存技术:完整指南

Image.png 缓存是软件工程中用于提高系统性能和用户体验的基本技术。它通过临时存储频繁访问的数据在缓存中,缓存比数据的原始来源更容易访问。 作为一名软件工程师,了解缓存以及它在不同类型的系统中的工作方式是至关重要的。在本文中,我们将…

基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小

文章目录 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 基于AOSP源码Android-10.0.0_r41分支编译,framework开发,修改系统默认字体大小 主要修改一个地方就行 代码源码路径 frameworks/base/co…

旅游业为什么要选择VR全景,VR全景在景区旅游上有哪些应用

引言: VR全景技术的引入为旅游业带来了一场变革。这项先进技术不仅提供了前所未有的互动体验,还为景区旅游文化注入了新的生机。 一.VR全景技术:革新旅游体验 1.什么是VR全景技术? VR全景技术是一种虚拟现实技术&am…

【C++初阶(四)aoto关键字与基于范围的for循环】

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

python实现MC协议(SLMP 3E帧)的TCP服务端(篇二)

python实现MC协议(SLMP 3E帧)的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样,可以使用现成的pymodbus模块去实现。但是,我们可以根据协议帧进行组包,自己去实现帧的格式,而这一切可以基于socket模…

Kotlin 进阶函数式编程技巧

Kotlin 进阶函数式编程技巧 Kotlin 简介 软件开发环境不断变化,要求开发人员不仅适应,更要进化。Kotlin 以其简洁的语法和强大的功能迅速成为许多人进化过程中的信赖伙伴。虽然 Kotlin 的初始吸引力可能是它的简洁语法和与 Java 的互操作性&#xff0c…

每天一点python——day61

#第61天 #字符串的驻留机制字符串:python中基本数据类型,是一个不可变的序列【目前我们学了两个:元组、字符串】 可以使用单引号,双引号,三引号来定义#定义字符串 apython#用单引号,双引号,三引…

Redis原理到常用语法基础图文讲解

在初期,已经讲述了Redis安装问题。现在正式进入Redis的入门阶段 系统架构的演进 传统单机架构 一台机器运行应用程序、数据库服务器 现在大部分公司的产品都是这种单机架构。因为现在计算机硬件发展速度很快,哪怕只有一台主机,性能也很高…

智慧城市排水系统,管网水位监测仪怎么监测

地下排水管网应用于城市的多个环境之中,比如排放雨水,污水或者是地表水等,总之是在维护城市的安全运行,并且保护城市地下生命线处于正常状态。但是一旦排水系统面对各种极端天气,便有可能会突发安全事故,导…

如何再kali中下载iwebsec靶场

这个靶场有三种搭建方法: 第一种是在线靶场:http://www.iwebsec.com:81/ 第二种是虚拟机版本的,直接下载到本地搭建 官网地址下载:http://www.iwebsec.com/ 而第三种就是利用docker搭建这个靶场,我这里是用kali进行…

部署kubevirt教程

前提条件 已安装:kubernetes集群、kubectl、docker apt install -y qemu-kvm libvirt virt-install bridge-utils 【所有节点全部安装】 virt-host-validate qemu部署kubevirt 下载kubevirt-cr.yaml和kubevirt-operator.yaml 先执行: Kubectl apply …

网络安全(黑客)-0基础小白自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

Go Gin中间件

Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息&am…

数据库系统原理与实践 笔记 #7

文章目录 数据库系统原理与实践 笔记 #7数据库设计和E-R模型(续)转换为关系模式具有简单属性的实体集的表示复合属性多值属性联系集的表示模式的冗余—合并 实体-联系设计问题设计问题联系属性的布局 扩展的E-R特性特化概化属性继承特化/概化的设计约束聚集E-R图表示方法总结E-…

聚会娱乐喝酒游戏小程序源码系统 可开流量主 带完整的搭建教程

今天罗峰来给大家分享一款聚会娱乐喝酒游戏小程序源码系统 。在聚会娱乐活动中,喝酒游戏是一种非常受欢迎的活动方式。但是,往往由于缺乏有效的组织和规则,导致游戏的进行不够顺畅,甚至出现混乱的情况。因此,开发一款能…

Java-Hbase介绍

1.1. 概念 base 是分布式、面向列的开源数据库(其实准确的说是面向列族)。HDFS 为 Hbase 提供可靠的 底层数据存储服务,MapReduce 为 Hbase 提供高性能的计算能力,Zookeeper 为 Hbase 提供 稳定服务和 Failover 机制&#xff0c…