Filter,Listener

news2025/1/7 8:31:08

1,Filter

概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能

过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等...

1.1 Filter快速入门

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

public class FilterDemo implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain Chain) throws IOException, ServletException {
        
    }

    @Override
    public void destroy() {

    }
}

1.1.2 配置Filter拦截资源的路径:在类上定义@WebFilter注解

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

1.1.3 在doFilter方法中输出一句话,并放行

public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
    System.out.println("FilterDemo...");
    //执行
    chain.doFilter(req,resp);
    //如果不放行,则页面不会显示东西
}

1.2 Filter的执行流程

1. 放行后访问对应资源,资源访问完成后,还会回到Filter中吗?

answer:会

2. 如果回到Filter中,是重头执行还是执行放行后的逻辑呢?

answer:放行后逻辑

执行放行前逻辑---->放行---->访问资源---->执行放行后逻辑

放行前,对request数据进行处理

放行后,对response数据进行处理

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    System.out.println("1.FilterDemo...");
    //放行
    chain.doFilter(request,response);

    System.out.println("3.FilterDemo...");
}

<h1>hello jsp~~~</h1>


<%
    System.out.println("2.FilterDemo...");
%>

1.3 Filter使用细节

1.3.1 Filter拦截路径配置

Filter可以根据需求,配置不同的拦截资源路径

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

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

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

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

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

1.3.2 过滤器拦截

一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链

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

例如:

A,FilterDemo,FilterDemo2中

首先执行A,其次是FilterDemo,最后是FilterDemo2

2,Listener

2.1 概述

概念:Listener表示监听器,是JavaWeb三大组件(Servlet、Filter、Listener)之一

监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件

Listener分类: JavaWeb中提供了8个监听器

监听器分类监听器名称作用
ServletContext监听ServletContextListener用于对ServletContext对象进行监听(创建、销毁)
ServletContextAttributeListener对Servletcontext对象中属性的监听(增删改属性)
Session监听HttpSessionListener对Session对象的整体状态的监听(创建、销毁)
HttpSessionAttributeListener对Session对象中的属性监听(增删改属性)
HttpSessionBindingListener监听对象于Session的绑定和解除
HttpSessionActivationListener对Session数据的钝化和活化的监听
Request监听ServletRequestListener对Request对象进行监听(创建、销毁)
ServletRequestAttributeListener对Reauest对象中国性的监听(增刷改国性)

2.2 ServletContextListener使用

2.2.1 定义类,实现ServletContextListener接口

public class ContextLoaderListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //加载资源
        System.out.println("ContextLoaderListener...");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //释放资源
    }
}

2.2.2 在类上添加@WebListener注解

@WebListener
public class ContextLoaderListener implements ServletContextListener {

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

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

相关文章

关于ChatGPT辅助论文写作的重大风险预警

ChatGPT已经发布一年多了&#xff0c;我说说使用它之后最大的变化。 我在工作上变得更懒了&#xff01; 现在与工作有关的&#xff0c;做啥都想着先用ChatGPT来搞。 比如&#xff0c;拍领导马屁&#xff1a; 领导说&#xff0c;“996是福报&#xff0c;混日子不是兄弟。” 我想…

javaWeb校园二手平台项目

一、系统分析 1.1开发背景 随着全世界互联网技术的不断发展&#xff0c;各种基于互联网技术的网络应用不断涌现,网络技术正在不断的深入人们的生活。人们从Internet上获取信息、享受生活、交流感情、网上工作等。Internet正在迅速改变着人们的生活方式。 经过我国改革开放多年…

Docker数据卷与网络模式

华子目录 数据卷注意数据卷操作查看镜像&#xff0c;容器&#xff0c;数据卷所占空间 Docker的网络模式查看指定容器的网络模式bridge模式none模式host模式container模式 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录&#xff0c;它绕过UFS&#xff0c;可以提供很多有…

【Qt】使用Qt实现Web服务器(八):SSE ( Server-sent Events )

1、简述 SSE ( Server-sent Events )是 WebSocket 的一种轻量代替方案,使用 HTTP 协议。 SSE 是单向通道,只能服务器向客户端发送消息,如果客户端需要向服务器发送消息,则需要一个新的 HTTP 请求。 WebSocket 是全双工通道,可以双向通信。 2、效果 在界面上不停的刷…

环境影响与碳排放生命周期评估应用及案例分析

生命周期分析 (Life Cycle Analysis, LCA) 是评价一个产品系统生命周期整个阶段——从原材料的提取和加工&#xff0c;到产品生产、包装、市场营销、使用、再使用和产品维护&#xff0c;直至再循环和最终废物处置——的环境影响的工具。这种方法被认为是一种“从摇篮到坟墓”的…

【Kubernetes】在 Mac 上搭建 Kubernetes

安装 Docker Desktop 前往 Install Docker Desktop on Mac | Docker Docs 下载 Docker Desktop 并完成安装。 配置镜像加速服务 在国内通过官方镜像源的下载速度很慢&#xff0c;因此需要配置镜像加速服务。 国内常见的镜像加速服务有&#xff1a; mirror.baidubce.comhub-…

基于springboot+vue+Mysql的网上图书商城

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

24/03/26总结

面向对象练习题&#xff1a;&#xff08;封装&#xff0c;继承&#xff0c;多态) 封装&#xff1a;对象代表什么&#xff0c;就得封装对应的数据&#xff0c;并提供数据对应的行为,(把零散的数据和行为封装成一个整体&#xff1a;也就是我们说的对象&#xff09; 继承:当封装…

Java编程练习之类的多态

类的多态可以从两方面体现&#xff1a;一是方法的重载&#xff0c;二是类的上下转型。 1&#xff09;方法的重载 方法的重载就是在同一个类中允许同时存在多个同名方法&#xff0c;只要这些方法的参数个数或类型不同即可。 练习1&#xff1a; 使用方法的重载描述所有的超市…

分治——快速排序算法

例题一 解法&#xff08;快排思想 - 三指针法使数组分三块&#xff09;&#xff1a; 算法思路&#xff1a; 类⽐数组分两块的算法思想&#xff0c;这⾥是将数组分成三块&#xff0c;那么我们可以再添加⼀个指针&#xff0c;实现数组分 三块。 设数组⼤⼩为 n &#xff0c…

快速了解LED开关电源的常见故障及如何解决

LED开关电源应用广泛&#xff0c;在我们的生活和工作中无处不在。然而在LED开关电源的实际使用中会出现一些问题和故障&#xff0c;可能会造成电源和LED灯受损。本文纳米软件将为大家介绍常见的LED开关电源的故障以及解决方法。 1. 输出电流不稳定 LED开关电源输出电流不稳定通…

Nuxt2:node-sass替换为sass,避免因依赖python导致Can‘t find Python executable “python“错误

一、问题描述 由于node-sass依赖于python&#xff0c;在缺少python环境时&#xff0c;会报以下错误&#xff1a; npm ERR! gyp ERR! stack Error: Cant find Python executable "python", you can set the PYTHON env variable.当服务器环境不想安装python或者不方…

Vitis报错:fatal error: xxx.h: No such file or directory.

在跑vitis工程文件时出现fatal error: xxx.h: No such file or directory.的错误&#xff0c;出现这种情况的主要是出现在大家用了自定义IP。 记住如果时出现Makefile出现错误&#xff0c;并不是你的代码问题而是软件bug&#xff0c;我们需要更改一些文件才能正常跑。 讲解一下…

如何快速下载GEO数据并获取其表达矩阵与临床信息 | 附完整代码 + 注释

GEO数据库可以说是大家使用频率贼高的数据库啦&#xff01;那它里面的数据怎么下载大家知道嘛&#xff01;今天给大家展示一种快速获取它的表达矩阵和临床信息的方法&#xff01; 话不多说&#xff01;咱们直接开始&#xff01; GEO编号获取 在GEO数据库中&#xff0c;你找到…

水牛社:宝妈副业,不仅赚钱更成长:一段充实之旅

大家好&#xff01;作为一名90后的全职宝妈&#xff0c;今天非常荣幸能够与大家分享我的互联网赚钱经验。趁着宝宝午睡的宝贵时光&#xff0c;我抓紧写下了这篇文章&#xff0c;虽时间紧凑&#xff0c;但我会力求内容清晰明了。 大约从2022年4月开始&#xff0c;我踏上了互联网…

【Node.js】定时任务

Cron表达式 Cron表达式是用于表示定时任务的一种语法。它由6个字段组成&#xff0c;按顺序分别表示分、时、日、月、周几和年份。 * * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └── 星期…

【智能算法】蛇优化算法(SO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2022年&#xff0c;FA Hashim等人受到蛇特殊交配行为启发&#xff0c;提出了蛇优化算法&#xff08;Snake Optimizer, SO&#xff09;。 2.算法原理 2.1算法思想 SO算法模拟蛇类的战斗与交配模式…

社会实践 | 暑期社会实践投稿攻略,凤凰网等(央媒/官媒)投稿入口,不同频道发稿详细报价

作为媒体行业的从业者&#xff0c;我们都清楚凤凰网等央媒/官媒的影响力和号召力。如果能在这些平台上发表文章&#xff0c;不仅可以增加个人影响力&#xff0c;还有利于传播自己的观点和思想。然而&#xff0c;很多人可能不知道如何才能在这些媒体上投稿。今天&#xff0c;我要…

错误记录

Packet for query is too large 错误原因 一般是没有修改Mysql允许传输的最大数据包大小&#xff0c;使用 SHOW VARIABLES LIKE %max_allowed_packet%;可以看到默认的大小&#xff0c;一般默认为1M。 处理方法 暂时修改&#xff1a;重启mysql后失效 --修改为10M set global…

鸿蒙开发实例:【demo-搜索历史记录】

图片演示效果&#xff1a; 鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或mau123789学习&#xff0c;是v喔 代码演示&#xff1a; // 注&#xff1a;当前代码基于宽度为…