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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本文介绍了JavaWeb中的过滤器(Filter)和监听器(Listener)概念及其使用。过滤器主要用于拦截和处理Web资源请求,如进行编码设置、权限验证等,它在Servlet之前和之后执行。监听器则监听域对象(如ServletRequest、HttpSession、ServletContext)状态变化,分为创建/销毁监听和属性变化监听。监听器在Web.xml中注册后会在相应事件发生时自动执行,例如用于统计网站访问人数或初始化配置。

前言


版权声明:本文为本博主在CSDN的原创文章搬运而来,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                            

原文链接:https://blog.csdn.net/weixin_72543266/article/details/138636768


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

过滤器(Filter)

1.什么是过滤器

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

image.gif

2.过滤器的语法格式

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

public class CharSetFilter implements Filter{}

image.gif

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的一些配置*/
            }

image.gif

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>

image.gif

3.使用场景

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

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

image.gif

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

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

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

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

3.4.非法文字筛选

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

3.5.下载资源的限制

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

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

监听器(Listener)

1.什么是监听器

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

2.监听器分类

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

image.gif

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

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

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

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

image.gif

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

销毁:请求结束

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

相关文章
|
11天前
|
监控 Java 数据管理
java会话跟踪和拦截器过滤器
本文介绍了Web开发中的会话跟踪技术——Cookie与Session,以及过滤器(Filter)和监听器(Listener)的概念和应用。Cookie通过在客户端记录信息来识别用户,而Session则在服务器端保存用户状态。过滤器用于拦截和处理请求及响应,监听器则监控域对象的状态变化。文章详细解释了这些技术的实现方式、应用场景和主要方法,帮助开发者更好地理解和使用这些工具。
27 1
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
61 1
|
1月前
|
Java C#
Java的监听处理事件--小球移动案例
Java的监听处理事件--小球移动案例
13 0
|
2月前
|
监控 前端开发 Java
Java里的过滤器和拦截器是什么原理,如何选择?
Java里的过滤器和拦截器是什么原理,如何选择?
30 0
|
3月前
|
安全 Java API
Java 8 流库的魔法革命:Filter、Map、FlatMap 和 Optional 如何颠覆编程世界!
【8月更文挑战第29天】Java 8 的 Stream API 通过 Filter、Map、FlatMap 和 Optional 等操作,提供了高效、简洁的数据集合处理方式。Filter 用于筛选符合条件的元素;Map 对元素进行转换;FlatMap 将多个流扁平化合并;Optional 安全处理空值。这些操作结合使用,能够显著提升代码的可读性和简洁性,使数据处理更为高效和便捷。
120 0
|
4月前
|
关系型数据库 MySQL Java
|
4月前
|
存储 程序员
JavaWeb之Listener监听器
JavaWeb之Listener监听器
75 0
|
5月前
|
安全 Java
使用FilterChain实现Java中的过滤器链
使用FilterChain实现Java中的过滤器链
|
Java 缓存 应用服务中间件
Java EE 之 过滤器入门学习与总结(2)
今天就对使用Filter技术能做什么来个小小的归纳。也为了方便今后的复习。 控制浏览器不进行对jsp页面的缓存 //在doFilter方法中添加这样的代码 HttpServletRequest request = (HttpServletRequest )req; Ht...
1022 0
|
8天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。