监听器Listener & 过滤器Filter

本文详细介绍了Java Web中的监听器Listener和过滤器Filter。Listener分为三类,监听作用域创建销毁、属性状态变更以及HttpSession的绑定和活化。Filter主要用于请求过滤,实现自动登录、敏感词过滤等功能,其执行顺序与注册映射顺序有关,且在服务器启动时创建,关闭时销毁。
摘要由CSDN通过智能技术生成

Listener & Filter

Listener

监听器,能做什么事?
监听某一个事件的发生,状态的改变。

监听器的内部原理:其实就是接口回调


1、接口回调

需求:A在执行循环,当循环到5的时候,通知B。

事先先把一个对象传递给 A,当A 执行到5的时候,通过这个对象,来调用B中的方法。
注意,不是直接传递B的实例,而是传递一个接口的实例过去。

在这里插入图片描述


2、Web监听器

总共有8个,划分成三种类型:3 + 3 + 2

ServletContextListener
ServletRequestListener
HttpSessionListener

ServletContextAttributeListener
ServletRequestAttributeListener
HttpSessionAttributeListener

HttpSessionBindingListener
HttpSessionActivationListener

如何创建监听器?

  • 定义一个类,实现接口
  • 注册 | 配置监听器

3、第一类:监听三个作用域创建和销毁。

哪三个作用域?
request — httpServletRequest
session — httpSession
application — ServletContext

(1)监听ServletContext创建销毁:ServletContextListener

servletContext创建:启动服务器。
servletContext销毁:关闭服务器,或者从服务器移除项目。

(2)监听request创建销毁:ServletRequestListener

request创建:访问服务器上的任意资源都会有请求出现。
例如:访问jsp,html,servlet等。
request销毁:服务器对这次请求作出了响应后。

测试代码:

public class MyRequestListener implements ServletRequestListener {
   
	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
   
		System.out.println("servletrequest 销毁了");
	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
   
		System.out.println("servletrequest 初始化了");
	}
}

在web.xml中注册监听器的代码:

<listener>
  	<listener-class>com.itheima.listener.MyRequestListener</listener-class>
</listener>

(3)监听session创建销毁:HttpSessionListener

session创建:只要调用getSession

访问html:不会创建session。
访问jsp:会,jsp中9个有内置对象,其中就包括了session。
访问servlet:会创建session。

session销毁:超时,默认是30分钟。

服务器非正常关闭,销毁session。
正常关闭服务器(序列化)。

测试代码:

public class MySessionListener implements HttpSessionListener {
   
	@Override
	public void sessionCreated(HttpSessionEvent se) {
   
		System.out.println("创建session了");
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
   
		System.out.println("销毁session了");
	}
}

监听三个作用域创建销毁的作用:

ServletContextListener的作用:
在servletcontext创建的时候,完成自己想要的初始化工作
执行自定义任务调度,执行某一个任务。

ServletRequestListener很少用到,来了数据请求服务器本身就知道。

HttpSessionListener的作用:
统计在线人数。


4、第二类:监听三个作用域属性状态变更

可以监听在作用域中值, 添加 | 替换 | 移除的动作。

(1)servletContext — ServletContextAttributeListener
在这里插入图片描述

(2)request — ServletRequestAttributeListener

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值