JavaWeb之过滤器(Filter)与监听器(Listener)

前言

过滤器(Filter)

1.什么是过滤器

2.过滤器的语法格式

3.使用场景

3.1.如何防止用户未登录就执行后续操作

3.2.设置编码方式--统一设置编码

3.3.加密解密(密码的加密和解密)

3.4.非法文字筛选

3.5.下载资源的限制

监听器(Listener)

1.什么是监听器

2.监听器分类

3.监听三大域对象的创建与销毁的监听器

4.Servlet域的生命周期

5.HttpSession对象的生命周期

6.HttpSessionListener监听器的主要作用:


前言

         回顾一下学习并对JavaWeb的学习过程中对笔记总结进行记录,同时进行思考过程中的理解加入其中,方便自己进行后续的学习和回顾,其实前面的那些都说不上和网安有关系,但是对于过滤器来说,在网安中,很多网站会通过顾虑器来过滤掉渗透人员发来的存在威胁的请求,当然过滤器也不是万无一失的.

过滤器(Filter)

1.什么是过滤器

        过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理

2.过滤器的语法格式

2.1.创建一个类实现Filter接口

public class CharSetFilter implements Filter{}

2.2.重写接口中的方法

public void destroy() { //销毁的方法}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {//过滤方法 主要是对request和response进行一些处理,然后交给下一个过滤器或Servlet处理chain.doFilter(req, resp);}
​
public void init(FilterConfig config) throws ServletException {/*初始化方法  接收一个FilterConfig类型的参数 该参数是对Filter的一些配置*/}

2.3.在web.xml文件中配置

   <filter><filter-name>过滤器名称</filter-name><filter-class>过滤器所在的路径</filter-class></filter><filter-mapping><filter-name>过滤器名称</filter-name><url-pattern>需要过滤的资源</url-pattern></filter-mapping>

3.使用场景

3.1.如何防止用户未登录就执行后续操作

String name=(String)session.getAttribute("key");if(name==null){//跳转到登录页面}

3.2.设置编码方式--统一设置编码

设置为utf-8等统一格式编码

3.3.加密解密(密码的加密和解密)

通过base64加密或解密,当然能创建自己公司的加密方式更好

3.4.非法文字筛选

对于存在危协的非法输入字符进行过滤操作

3.5.下载资源的限制

防止未收权或是非法下载资源

过滤器的特点:在servlet之前和之后都会被执行

监听器(Listener)

1.什么是监听器

        监听器就是监听某个域对象的的状态变化的组件 ​ 监听器的相关概念: ​ 事件源:被监听的对象(三个域对象 request、session、servletContext) ​ 监听器:监听事件源对象事件源对象的状态的变化都会触发监听器 ​ 注册监听器:将监听器与事件源进行绑定 ​ 响应行为:监听器监听到事件源的状态变化时所涉及的功能代码(程序员编写代码)

2.监听器分类

        第一维度按照被监听的对象划分:ServletRequest域、HttpSession域、ServletContext域 ​ 第二维度按照监听的内容分:监听域对象的创建与销毁的、监听域对象的属性变化的

3.监听三大域对象的创建与销毁的监听器

监听器的编写步骤(重点):

        编写一个监听器类去实现监听器接口 ​ 覆盖监听器的方法 ​ 需要在web.xml中进行配置—注册

<listener><listener-class>监听器所在的路径</listener-class>                                    </listener>

ServletContextListener

监听ServletContext域的创建与销毁的监听器

4.Servlet域的生命周期

何时创建:服务器启动创建 ​ 何时销毁:服务器关闭销毁

ServletContextListener监听器的主要作用

        初始化的工作:初始化对象、初始化数据(加载数据库驱动、连接池的初始化) ​ 加载一些初始化的配置文件(spring的配置文件) ​ 任务调度(定时器—Timer/TimerTask)

HttpSessionListener

监听Httpsession域的创建和销毁的监听器

5.HttpSession对象的生命周期

        何时创建:第一次调用request.getSession时创建 ​ 何时销毁:服务器关闭销毁、session过期(默认30分钟,修改默认的30分钟是在Tomcat的web.xml,修改当前项目的过期时间是在自己项目的web.xml中)、手动销毁

6.HttpSessionListener监听器的主要作用:

        由于每次访问网站都会默认创建session对象(jsp页面中page指令中的session属性默认为true,即被访问时创建session),可以用于计数网站访问过的人

ServletRequestListener

监听ServletRequest域创建与销毁的监听器

ServletRequest的生命周期 

创建:每一次请求都会创建request

销毁:请求结束

用处不是很多,就不多写了

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

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

相关文章

请介绍下重要的CUDA API

CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA推出的通用并行计算架构&#xff0c;它提供了一系列API供开发者调用&#xff0c;以充分利用GPU进行高性能计算。以下是一些重要的CUDA API&#xff1a; CUDA Runtime API&#xff1a; 这是CUDA编程…

Ci24R1 (SOP8)2.4GHz无线收发一体、双向系统的智能家居芯片

Ci24R1 &#xff08;SOP8&#xff09;工作范围在2.4GHzISM频段&#xff0c;专为低系统应用成本的无线场合设计&#xff0c;集成嵌入式ARQ基带协议引擎的无线收发器芯片。它的工作频率范围为2400MHz-2525MHz&#xff0c;共有126个1MHz带宽的信道。 Ci24R1 &#xff08;SOP8&…

IPFoxy Tips:什么是静态住宅IP?静态ISP代理指南

静态住宅代理&#xff08;也称为静态ISP代理&#xff09;是最流行的代理类型之一。它们也是隐藏您的身份并保持在线匿名的最佳方法之一。您为什么要使用住宅代理而不是仅使用常规代理服务&#xff1f;下面我具体分享。 一、什么是静态住宅代理&#xff1f; 首先&#xff0c;我…

无监督式学习

1.是什么&#xff1f; 无监督式学习与监督式学习**最大的区别就是&#xff1a;**没有事先给定的训练实例&#xff0c;它是自动对输入的示例进行分类或者分群&#xff1b; 优点&#xff1a;不需要标签数据&#xff0c;极大程度上扩大了我们的数据样本&#xff0c;其次不受监督信…

STC8增强型单片机开发day02

逻辑分析仪 什么是逻辑分析仪 逻辑分析仪&#xff08;Logic Analyzer&#xff09;是一种工具&#xff0c;用于分析数字信号&#xff0c;例如控制信号&#xff0c;时钟信号等等。它可以用于调试和验证数字电路、嵌入式系统等等 本人采用的是mini版USB 逻辑分析仪。总共有10个…

刷题《面试经典150题》(第九天)

加油&#xff01; 学习目标&#xff1a;学习内容&#xff1a;学习时间&#xff1a;知识点学习内容&#xff1a;跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09;H 指数 - 力扣&#xff08;LeetCode&#xff09;盛最多水的容器 - 力扣&#xff08;LeetCode&#xff09;矩阵置…

Spring学习笔记

目录 1. Spring有什么优势 1.1 模块化 1.2 轻量级 1.3 方便集成各种优秀框架 1.4 提供了分层开发下的完整技术解决方案 1.5 Java语言编写的开源框架&#xff0c;使用了多种设计模式 2. Spring的第一个程序 2.1 开发环境 2.2 环境搭建 2.3 编码测试 2.4 BeanFactory的UML类图…

pytest教程-42-钩子函数-pytest_runtest_makereport

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_runtest_teardown钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_runtest_makereport钩子函数的使用方法。 pytest_runtest_makereport 钩子函数在 pytest 为每个测试生成报…

交易复盘-20240509

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 一支股票 10%的时候可以操作&#xff0c; 90%的时间适合空仓等待 百合花 (4)|[9:25]|[17717万]|1.93 时代万恒…

多线程学习D10 收尾了应该

线程安全集合类概述 重点介绍java.util.concurrent.* 下的线程安全集合类&#xff0c;可以发现它们有规律&#xff0c;里面包含三类关键词&#xff1a;Blocking、CopyOnWrite、Concurrent Blocking 大部分实现基于锁&#xff0c;并提供用来阻塞的方法 CopyOnWrite 之类容器修改…

代码随想录刷题随记31-贪心5

代码随想录刷题随记31-贪心5 435. 无重叠区间 leetcode链接 按照右边界排序&#xff0c;从左向右记录非交叉区间的个数。 此时问题就是要求非交叉区间的最大个数。 这里记录非交叉区间的个数还是有技巧的&#xff0c;如图&#xff1a; 左边界排序可不可以呢&#xff1f; 也是…

多态的概念及运用

多态 概念&#xff1a;多态是指同一种行为具有多个不同的表现形式或形态的能力。在Java中&#xff0c;多态是指一个对象的实际类型可以是其父类或接口类型&#xff0c;但在运行时会根据其实际类型来调用相应的方法。是面向对象的第三大特征&#xff0c;建立于封装和继承之上。…

mysql安装及基础设置

关系型数据库 MySQL是一种关系型数据库管理系统&#xff0c;采用了关系模型来组织数据的数据库&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;用户通过查询 sql 来检索数据库中的数据。 yum 方式安装 mysql # yum -y install mysql-server # systemctl start my…

信号槽机制

目录 信号槽机制 Qt 中的信号 槽函数 槽函数定义 通过代码创建槽函数 通过ui文件创建槽函数 自定义信号 带参数的信号与槽 信号槽断开绑定 信号槽机制 信号和槽机制是 Qt 中一个非常重要的一个机制, 因为有信号和槽机制, 就可以通过某些条件的触发来调用这些槽函数, …

[力扣题解]131. 分割回文串

题目&#xff1a;131. 分割回文串 思路 回溯法 切割问题&#xff1a;在某个地方画一个挡板&#xff0c;比如aab可以画成&#xff1a;a|ab&#xff0c;a|a|b&#xff0c;每个字母之间理论上都可画一个挡板&#xff1b; 抽象成当前n个字母&#xff0c;画一道挡板&#xff0c;挡…

Django框架之Ajax进阶

一、前后端传输数据的编码格式(contentType) 此内容主要是研究post请求数据的编码格式&#xff0c;因为get请求数据就是直接放在url后面的。 首先我们在前面叙述过可以朝后端发送post请求的方式有 form表单Ajax 然后现在又了解到前后端传输数据的编码格式有 urlencodedfor…

啰嗦一下开发语言

这次不发版了&#xff0c;直接啰嗦一下吧 MySQL Binlog Digger 4.33这个版本一直迟迟没有推出&#xff0c;因为原来用Python写的版本已经没有多少优化的空间了&#xff0c;而号称性能强劲的Python 3.13官方一直没发版。 Python编写效率高是人所共知&#xff0c;但Python执行效…

ASP.NET信息安全研究所设备管理系统的设计与实现

摘 要 以研究所的设备管理系统为背景&#xff0c;以研究所设备管理模式为研究对象&#xff0c;开发了设备管理系统。设备管理系统是设备管理与计算机技术相结合的产物&#xff0c;根据系统的功能需求分析与定义的数据模式&#xff0c;分析了应用程序的主要功能和系统实现的主…

zabbix动作执行命令失效不起作用?

1. zabbix在web界面设置完主机组&#xff0c;主机&#xff0c;监控项&#xff0c;触发器&#xff0c;动作之后 监控项监控到了&#xff0c;触发器触发动作&#xff0c;但是执行的指令不起作用 流程 在zabbix-agent端将nginx服务down掉&#xff0c;zabbix会自动监控并执行重启的…

TypeScript学习日志-第二十一天(声明文件d.ts)

声明文件d.ts 在使用 Typescript 并使用第三方库 的时候 我们会发现会有很多的提示或补全&#xff0c;这都是声明文件起的作用&#xff0c;但是有写冷门的第三方库是没有声明文件的&#xff0c;这时候引用就会报错&#xff0c;我们就使用 express 库作为例子来展示一下&#x…