servlet监听器快速入门

本文介绍了Servlet中的监听器,包括ServletContextListener、HttpSessionListener和ServletRequestListener,详细讲解了它们的作用、配置方式以及应用场景。通过案例展示了如何使用监听器统计当前在线人数,并探讨了监听域对象属性变更和Java类状态改变的监听器。最后讨论了如何配置session的序列化和反序列化。
摘要由CSDN通过智能技术生成


前言

监听器就是一一个实现了特定接口的Java类,这个Java类用于监听另一个Java类的方法调用或者属性的改变。当被监听对象发生上述事件后,监听器某个方法将会立即被执行。用来监听其他对象的变化的。主要应用在图形化界面开发上。 例如: Java中GUI, Android

事件源:指的是被监听对象(汽车)。
监听器:指的是监听的对象(报警器)。
事件源和监听器绑定:在汽车上安装报警器。
事件:指的是事件源对象的改变(踹了汽车一脚) --------主要功能获得事件源对象。

接下来学习的是servlet中的3种监听器

servlet中的监听器

在Servlet中定义了多种类型的监听器,它们用于监听的事件源分别是ServletContext、
HttpSession和ServletRequest这三个域对象。

一类:监听三个域对象的创建和销毁的监听器(三个)。
二类:监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个)。
三类:监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监
听(两个)。

下面我将着重介绍几个常见的。

一、ServletContextListener监听器

用来监听ServletContext域对象的创建和销毁的监听器。

创建:在服务器启动的时候,为每个web应用创建单独的ServletContext 对象
销毁:在服务器关闭的时候,或者项目从web服务器中移除的时候。。

事件源和监听器需要通过配置去绑定
在web.xml中去配置:如下代码即可绑定监听器
在这里插入图片描述
代码演示:

package com.listener.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener{
   

	@Override
	public void contextDestroyed(ServletContextEvent sce) {
   
		System.out.println("ServletContext对象被销毁了。。");
		
	}

	@Override
	public void contextInitialized(ServletContextEvent sce) {
   
		System.out.println("ServletContext对象被创建了。。");
	}
	
}

用途:
加载框架的配置文件。例如:Spring框架提供了一个核心监听器 ContextLoaderListener。
定时任务调度,例如过生日给你发祝贺邮件

二、HttpSessionListener监听器

监听HttpSession对象的创建和销毁。

创建:服务器端第一次调用getSession()方法时候。
销毁:非正常关闭服务器 (正常关闭服务器session会被序列化)。点击terminate(强制关机)就会销毁,但是看不见销毁信息
Session过期(默认过期时间30分钟)。
手动调用session.invalidate()方法。

web.xml配置方式同上
代码演示:

package com.listener.listener;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyHttpSessionListener implements HttpSessionListener{
   

	@Override
	public void sessionCreated(HttpSessionEvent se) {
   
		System.out.println("HttpSession对象被创建了。。");
		
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
   
		System.out.println("HttpSession对象被销毁了。。");
		
	}

}

访问HTML是否创建Session : 不会。
访问JSP是否创建Session : 会。JSP编译的时候回创建session
访问Servlet是否创建Session : 不会(默认没有调用getSession方法)

三、ServletRequestListener监听器

用户监听ServletRequest 对象的创建和销毁

创建: 从客户端向服务器发送一次请求, 服务器就会创建request对象。
销毁: 服务器对这次请求作出了响应之后,request 对象就销毁了。

web.xml配置方式同上
代码如下:

package com.listener.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

public class MyServletRequestListener implements ServletRequestListener{
   

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
   
		System.out.println("ServletRequest对象被销毁了。。。");
	}

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
   
		System.out.println<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值