Servlet, Filter, Listener 启动与执行顺序

news2024/9/20 19:46:42

Servlet, Filter, Listener 启动与执行顺序

    • 1、启动顺序 **Listener -> Filter -> Servlet**
    • 2、记忆口诀
    • 3、执行顺序


💖The Begin💖点点关注,收藏不迷路💖

在Java Web应用中,Servlet、Filter和Listener的启动与执行顺序至关重要,它们遵循着固定的流程:

1、启动顺序 Listener -> Filter -> Servlet

  • 1.1 Listener(监听器):最先加载,监听应用生命周期等事件。

启动时机

  • Web应用启动时,容器会首先加载并初始化Listener。

作用

  • 监听Web应用中的特定事件,如ServletContext的创建和销毁、HttpSession的创建和销毁等。
  • 在这些事件发生时执行相应的逻辑,如初始化资源、清理数据等。
  • 1.2 Filter(过滤器):随后初始化,处理请求前后的预处理和后处理。

初始化

  • 在Web应用启动且Listener初始化之后,Filter会被初始化。

作用

  • 在Servlet处理请求之前或之后,对请求和响应进行预处理和后处理。
  • 例如,进行请求验证(如身份验证、授权)、日志记录、字符编码转换等。
  • Servlet(服务器端程序):最后初始化,处理具体业务逻辑。

初始化

  • 在Filter之后,Servlet会被初始化。

作用

  • 处理客户端发送的请求,并生成响应返回给客户端。
  • 是Web应用中最核心的业务处理单元,负责执行具体的业务逻辑。

2、记忆口诀

理(Listener)发(Filter)师(Servlet)
这个口诀形象地帮助记忆它们的启动顺序。

3、执行顺序

需要注意的是,虽然启动顺序是固定的,但执行顺序(特别是在处理请求时)可能因Filter的配置和请求的具体路径而有所不同。Filter可以配置为拦截特定的URL模式,从而对符合条件的请求进行过滤处理。


在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT +ffmpeg-4.2.2-win64-shared 拉取 RTMP/http-flv 流播放

拉取HTTP-FLV视频流处理逻辑: 1.在子线程中从流媒体服务端拉取视频流、使用ffmpeg进行解码,转成QImage ,发送给主线程。 2.主线程接收QImage后在界面显示。 pro文件: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT…

Driver.js——实现页面引导

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

TCP的流量控制深入理解

在理解流量控制之前我们先需要理解TCP的发送缓冲区和接收缓冲区,也称为套接字缓冲区。首先我们先知道缓冲区存在于哪个位置? 其中缓冲区存在于Socket Library层。 而我们的发送窗口和接收窗口就存在于缓冲区当中。在实现滑动窗口时则将两个指针指向缓冲区…

数据结构代码集训day10(适合考研、自学、期末和专升本)

习题均来自B站up:白话拆解数据结构! 题目如下: (1)求两个链表的交集并存在第一个表中,注意俩链表是递增的且表示的是集合; (2)【408真题】假设该链表只给出了头指针 li…

C语言 | Leetcode C语言题解之第389题找不同

题目&#xff1a; 题解&#xff1a; char findTheDifference(char* s, char* t) {int n strlen(s), m strlen(t);int ret 0;for (int i 0; i < n; i) {ret ^ s[i];}for (int i 0; i < m; i) {ret ^ t[i];}return ret; }

自己动手写CPU_step6_算术运算指令

序 接上篇&#xff0c;本篇开始实现算数运算指令&#xff0c;包括加减乘除&#xff0c;加减比较好实现&#xff0c;乘除则需要考虑指令周期与其他指令的周期长度不一致问题&#xff0c;可能会导致流水线效率下降&#xff0c;本篇先实现简单的算术运算。 指令定义 define EXE_AD…

java epoll网络编程

java epoll网络编程 从通信开始 人类社会的发展离不开相互协作&#xff0c;一起围猎、抵御野兽&#xff0c;一起扛起锄头夯地、夯人&#xff0c;再到你与好兄弟之间征战峡谷。在这一切互相协作的背后&#xff0c;都离不开信息的传递&#xff0c;也就是通信。一群人聚在一起&am…

Android学习笔记(一) Android Studio 安装配置

大家好&#xff0c;我是半虹&#xff0c;这篇文章来讲 Android Studio 的安装配置 1、基本介绍 Android Studio 是 Google 推出的 Android 集成开发环境&#xff0c;可以用于创建、开发和调试 Android 项目 Android Studio 是基于 IntelliJ IDEA 开发的 &#xff0c;提供了专…

typora的一些配置方法

1.设置图片的保存路径 选择 文件 --> 偏好设置 --> 图像 --> 设置图片要保存的位置 将网络的图片保存到本地&#xff0c;例如&#xff0c;从csdn复制文章时&#xff0c;将文章中的图片自动保存到本地 在图像设置的插入图片时一栏&#xff0c;勾选对网络位置的图片应…

vmware中克隆过来的linux节点无system eth0

问题现象 使用vmware虚拟机的克隆功能后&#xff0c;找不到system eth0 解决办法 编辑/etc/udev/rules.d/70-persistent-net.rules文件 可以看到&#xff0c;eth0&#xff0c;是克隆前机器的网卡&#xff0c;eth1是克隆后机器生成的网卡&#xff0c;所以把NAME"eth0&q…

解决方案:在autodl环境下安装torch被killed掉

文章目录 一、现象二、解决方案 一、现象 平台&#xff1a;autodl 镜像&#xff1a;PyTorch 2.0.0 Python 3.8(ubuntu20.04) Cuda 11.8 GPU&#xff1a;A40(48GB) * 1 CPU&#xff1a;15 vCPU AMD EPYC 7543 32-Core Processor 内存&#xff1a;80GB 安装torch:1.13.0环境&a…

基于CloudflareSpeedTest项目实现git clone加速

1.网络测速 「自选优选 IP」测试 Cloudflare CDN 延迟和速度&#xff0c;获取最快 IP 更多内容参考项目&#xff1a;https://github.com/XIU2/CloudflareSpeedTest 国外很多网站都在使用 Cloudflare CDN&#xff0c;但分配给中国内地访客的 IP 并不友好&#xff08;延迟高、丢…

串口助手使用和插入usb转TTL的COM口识别问题

问题出现原因 由于串口调试中经常需要通过断电对单片机烧录程序&#xff0c;所以制作了一个转接带开关的USB 转接口&#xff0c;如下图所示&#xff0c;其中按键控制的是OUT口的电源通断。但为了能够数据传输&#xff0c;有两根传输数据的线是一直连接的。在使用usb进行程序烧…

【Threejs学习】创建Threejs页面

学习文档地址&#xff1a; threejs官网&#xff1a;https://threejs.org/ Threejs官网中文文档&#xff1a;https://threejs.org/docs/index.html#manual/zh/ threejs中文网&#xff1a;http://www.webgl3d.cn/ threejs基础教程&#xff1a;http://www.webgl3d.cn/pages/aac9ab…

《软件工程导论》(第6版)第6章 详细设计 复习笔记

第6章 详细设计 一、详细设计概述 1&#xff0e;目标 &#xff08;1&#xff09;详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统&#xff0c;即经过这个阶段的设计工作&#xff0c;应该得出对目标系统的精确描述&#xff0c;从而在编码阶段可以把这个描述直接…

四足机器人控制算法——建模、控制与实践(unitree_guide配置)

目录 官方文档 unitree_guide 1. 快捷指令 2. ROS安装 3. LCM库安装 3.1. 安装步骤 4. pthread库 5. 工程文件下载 6. 编译 报错&#xff1a; 报错1 报错2&#xff1a; 报错3 其他报错 7. 运行 7.1. 运行 Gazebo 仿真环境 7.2. 启动控制器 8. 简单使用 官方文…

贪心(临项交换)

前言&#xff1a;对待这个问题&#xff0c;我想到就是一定是贪心&#xff0c;但是我不知道怎么排序 对待这种问题&#xff0c;肯定是要先假设只有两个&#xff0c;我们要怎么排序呢 class Solution { public:long long minDamage(int power, vector<int>& damage, v…

分布式主键

目录 1.分布式主键的基本需求 2.常见的分布式主键生成策略 2.1UUID&#xff08;128位&#xff09; 2.2MySQL 2.2.1自增主键 2.2.2区间号段 2.3Redis 2.4SnowFlake雪花算法&#xff08;64位&#xff09; 1.分布式主键的基本需求 全局唯一&#xff1a;不管什么主键&…

Linux驱动(二):模块化编程的基本操作

目录 前言一、模块化编程1.模块化驱动代码框架2.printk详解3.应用操作 二、多模块编程三、多文件编程四、函数传参 前言 没多少东西&#xff0c;就是最基础的一些Linux驱动编写操作。 一、模块化编程 驱动加载到内核中的两种方法&#xff1a; 1.静态编译&#xff1a;就是将模…

【Python百日进阶-Web开发-Feffery】Day500 - dash使用秘籍

文章目录 前言:fac是什么?“人生苦短,我用Python;Web开发,首选Feffery!”↓↓↓ 今日笔记 ↓↓↓1 dash应用使用cdn加载静态资源1.1 页面效果1.2 项目源码2 suppress_callback_exceptions=True3 阻止首次回调3.1 阻止所有回调函数的首次回调3.2 阻止单个回调函数的首次回…