Filter快速入门、Filter执行流程、Filter使用细节、Listener概念、分类、ServletContextListener使用

news2024/9/21 10:56:09

文章目录

  • Filter
    • Filter快速入门
    • Filter 执行流程
    • Filter使用细节
  • Listener
    • ServletContextListener 使用

Filter

  • 概念:Filter表示过滤器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。
  • 过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。
  • 过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等…
    在这里插入图片描述

Filter快速入门

  • 定义类,实现 Filter 接口,并重写其所有的方法
    在这里插入图片描述
    在这里插入图片描述

  • 配置Filter拦截资源的路径:在类定义@WebFilter 注解
    在这里插入图片描述
    在这里插入图片描述

  • 在 doFilter方法中输出一句话,并放行。
    在这里插入图片描述
    在这里插入图片描述

Filter 执行流程

在这里插入图片描述

  • 放行后访问对应资源,资源完成访问后,还会回到 Filter 中吗?
  • 如果回到 Filter 中,是重头执行还是执行放行后的逻辑呢?
    • 放行后逻辑
      在这里插入图片描述

在这里插入图片描述

  • 我在doFilter方法中写了两个输出语句,对应的位置分别在放行前和放行后
    在这里插入图片描述

  • 在 index.jsp中也写了一个输出语句

  • 分别在输出语句中表明输出的顺序
    在这里插入图片描述

  • 运行 tomact 并访问对应的路径
    在这里插入图片描述

  • 控制台输出

Filter使用细节

  • Filter 拦截路径配置

    • Filter 可以根据需求,配置不同的拦截资源路径
      在这里插入图片描述

      • 拦截具体的资源:/index.jsp:只有访问 index.jsp时才会被拦截

      • 目录拦截:/user/*:访问/user下的所有资源,都会被拦截

      • 后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截

      • 拦截所有:/*:访问所有资源,都会被拦截

    • 下图为拦截 index.jsp的代码
      在这里插入图片描述

    • 当我访问 index.jsp时,我对应的语句会输出在控制台上
      在这里插入图片描述

    • 当我去 访问 hello.jsp时,控制台只会输出hello.jsp文件资源中的输出语句
      在这里插入图片描述

    • 如上证明 拦截路径配置的第一条结论

  • 过滤器链

    • 一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链
      在这里插入图片描述

    • 注解配置的 Filter,优先级按照过滤器类名(字符串)的自然排序

    • 如下,我配置了两个过滤器,分别重写里边的 doFilter()方法,在两个过滤器 放行前和放行后分别设置了输出语句,拦截路径都配置为 index.jsp,这样就形成了一条过滤器链,通过分析每条输出语句输出的顺序,我提前给他们标了相应的序号
      在这里插入图片描述
      呵呵
      在这里插入图片描述

  • 运行tomact并访问对应路径验证是否正确
    在这里插入图片描述

Listener

  • 概念:Listener表示监听器,是 JavaWeb三大组件(Servlet、Filter、Listener)之一。
  • 监听器可以监听就是在application,session,request三个对象创建、销毁或往其中添加修改删除属性时自动执行代码的功能组件
  • Listener分类:JavaWeb中提供了8个监听器
    在这里插入图片描述

ServletContextListener 使用

  • 定义类,实现 ServletContextListener接口
    在这里插入图片描述

  • 在类中添加 @WebListener 注解

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

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

相关文章

DASCTF X GFCTF 2022十月挑战赛web

前言 晚来的比赛web题解,这次buu的十月赛web部分的题目对于我来说质量还是蛮高的,因为这几天比较忙,一直没有去复现总结,不过该复现的还得复现,复现了这次比赛又能学到不少知识,嘿嘿嘿。 EasyPOP 考察ph…

Mega-Nerf学习笔记

Mega-NeRF:Scalable Construction of Large-Scale NeRFs for Virtual Fly-Throughs 主页:https://meganerf.cmusatyalab.org/ 论文:https://meganerf.cmusatyalab.org/resources/paper.pdf 代码:https://github.com/cmusatyalab/mega-nerf …

【设计模式】简单工厂模式

简单工厂模式–》工厂模式—》抽象工厂模式 文章目录简单工厂模式定义:各个角色1. 抽象产品类2. 具体产品类:3. 工厂类:简单工厂模式的核心。客户端设计图表未使用简单工厂模式:出现的问题:使用简单工厂模式&#xff1…

小熊派-FreeRTOS-点灯学习过程-20221029

一、前言准备 1、小熊派一个(STM32L431RCT6) 2、STM32CubeMX 3、keil5 4、小熊派的配套开发资料(用于出问题的时候替换) 二、实现过程 代码主要由STM32CubeMX生成,所以过程主要是配置CubeMX. 1、芯片选型 STM3…

用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)

目录 打包前置知识 一、什么是exe可执行文件? 二、为什么要将 Python 程序打包为 exe 可执行文件? 三、为什么 Python 程序不能直接运行呢? 四、我们用什么来打包 Python 文件呢? 五、打包有哪几种分类呢? 打包…

【ArcGIS微课1000例】0041:ArcGIS利用坐标生成点的方法总结

本文讲解ArcGIS利用坐标生成点的3种方法。 文章目录 一、转到XY工具定位二、输入绝对XY生成点三、添加XY数据一、转到XY工具定位 这样确实可以在图上快速定位某个经纬度的点,但是生成的对象是“注记类”要素,即不是地理实体,而仅仅是为了绘图表现的东西。可以用如下工具来控…

Kotlin协程-并发处理-基础

一、协程与并发 Kotlin协程是基于线程执行的。经过一层封装以后,Kotlin协程面对并发,处理方式与Java不同。 在java的世界里,并发往往是多个线程一起工作,存在共享的变量。需要处理好同步问题。要避免把协程与线程的概念混淆。 …

验证码的编写

编写一个验证码(可以通过键盘输入需要获取验证码的位数): public class IdentifyingCode {public static void main(String[] args) {//验证码的编写IdentifyingCode identifyingCode new IdentifyingCode();//扫描键盘输入Scanner scanner new Scanner(System.i…

【数据结构基础】之数组介绍,生动形象,通俗易懂,算法入门必看

【数据结构基础】数组前言一、数组的定义1.基本概念和内存图2.数组的性质3.数据结构二、玩转数组1.循环遍历打印数组的每一个值2.查找一个数组里存在的值3.打擂台的形式找最大值4.元素的位移5.数组的扩容6.数组的反转三、二维数组四、初识算法1.排序算法2.查找算法3.算法性能4.…

电力电子的一些知识

文章目录数电模电逻辑电路与或非异或 门电路与的物理电路边沿触发器功率交流容量直流容量桥电路CHBDABTHD电路器件LM7815与LM7915数电模电 逻辑电路 与或非异或 门电路 与乘大于1或加大于1异或异性为1,异吗? 与的物理电路 当二极管是高电平&#xf…

stm32f407探索者开发板(一)——资源介绍(顺便说下无人机的进度状况)

文章目录零、前言一、前置问题二、注意事项三、学习方法四、外观五、关于sw仿真零、前言 最近虽然在做无人机小项目啦,但是呢由于疫情,各种零件一直没发,很头疼,现在关于遥控器和接收机的选型也没定下来,嗯&#xff0…

【Java】Spring boot快速上手(一):葵花宝典

目录前言学习目标学习内容工具及其环境配置说明新建spring web项目打开idea 新建项目创建项目配置设置静态资源映射编写html访问前端最后前言 该系列文章仅用于个人学习记录,适合入门级,对于文中有错误的地方还望海涵,之前打算结合《瑞吉外卖…

【JavaSE】初识Java

文章目录一. Java语言概述1. Java语言的组成1.1 什么是JavaSE1.2 什么是JavaEE1.3 什么是JavaME2. Java语言的产生3. Java语言的优势二. 初识Java的main方法1. main方法示例2. 运行Java程序一. Java语言概述 Java是一门面向对象编程语言,不仅吸收了C语言的各种优点…

学习python第一天,请教一下怎么学?

前言 小白建议以视频入门,或者是看一些适合入门的书比如《笨办法学Python》; 在这个资源泛滥的时代,更需要有自己的一套学习方法。尤其是针对自学来说,遇到问题不知道如何解决,那么就要做好前置的学习计划&#xff1…

我越努力生活,生活就越努力的干我

92年出生,工作9年。我也不知道今年多少岁了,结婚6年,两个小孩,一个是男孩,「该死的」另一个也是男孩,周五晚上,手机屏幕的时间刚过9点50,我小心拉开门缝往里面瞧了一眼后推开房门&am…

C++ Reference: Standard C++ Library reference: C Library: cstring: strchr

C官网参考链接&#xff1a;https://cplusplus.com/reference/cstring/strchr/ 函数 <cstring> strchr const char * strchr ( const char * str, int character ); char * strchr ( char * str, int character ); 定位字符串中第一个出现的字符 返回指向C字符串s…

[前端基础] 浏览器篇

提供基础用法&#xff0c;基础概念引用 MDN、W3C&#xff0c;基础内容做扩展知识&#xff0c;可应对面试&#xff0c;详细原理及应用需要去官网、GitHub 深入学习。 1、常用 BOM 方法 BOM&#xff08;browser object model&#xff09;简称浏览器对象模型&#xff0c;BOM 提供…

【SpringBoot笔记18】SpringBoot实现统一异常处理、统一结果响应、统一参数校验

这篇文章&#xff0c;主要介绍如何利用SpringBoot框架实现统一异常处理、统一结果响应、统一参数校验。 目录 一、SpringBoot统一结果响应 1.1、创建工程 1.2、配置FastJson 1.3、创建ResultEnum枚举 1.4、创建Result实体类 二、SpringBoot统一异常处理 2.1、创建自定义…

【LeetCode 784. 字母大小写全排列】异或进行字母大小写变换

LeetCode784.字母大小写全排列解题方法&#xff1a;回溯用异或进行大小写变换正式解题总代码784.字母大小写全排列 给定一个字符串 s &#xff0c;通过将字符串 s 中的每个字母转变大小写&#xff0c;我们可以获得一个新的字符串。 返回 所有可能得到的字符串集合 。以 任意顺…

htm+JS实现绘制数学函数绘图

htmJS实现绘制数学函数绘图 其中常用的函数可参见&#xff0c;JS中常用的Math方法 https://blog.51cto.com/u_10725738/5253407 https://www.jb51.net/article/9151.htm JS(JavaScript)常用Math函数与用法说明 方法描述示例abs(x)返回数的绝对值。Math.abs(-10)//返回10aco…