【Servlet学习之】监听器

本文深入探讨了Java中的监听器机制,详细解释了如何注册监听器以及它们在不同作用域(如ServletContext、ServletRequest和Session)中的具体应用。重点介绍了用于监听属性变化的监听器接口,并通过示例代码展示了如何使JavaBean感知自己在session域中的状态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。


一。注册监听器的两步:
1.实现某个监听器接口;
2.在web.xml中注册:如:
<listener>
<listener-class>com.oterman.listener.MyServletContextListener</listener-class>
</listener> 


二。三大作用域的监听器:

三大作用域:request,pageContext,Session(page无监听器接口);

监听三大作用域的监听器接口:
1.ServletContextListener:用来监听ServletContext对象的创建和销毁;可以在对应的方法中加入要实现的代码;
servlecontext的生命周期:tomcat服务器加载web应用的时候,创建该对象,web应用退出的时候,结束该对象;

2.ServletRequestListener:监听request对象的创建和销毁;
request对象的生命周期:每次请求都会创建request对象,请求完毕后销毁对象;

3.HttpSessionListener
Session的生命周期:调用request.getSession(),创建Session对象;
调用session对象上的invalidate()方法销毁对象;
设置超时时间,销毁对象,如:
<session-config>
<session-timeout>1</session-timeout>//一分钟后session挂掉;
</session-config> 
 
三。用来监听三大作用域域属性变化的监听器
域属性变化包括:添加属性,替换属性,移除属性;
ServletContextAttributeListener(比上多一个attribute关键字);

监听器就是一个普通的类,实现了一些特殊的接口,创建时是 new class 不是 new servlet;


四。使javabean能够感知自己被存入session域中状态变化的两个监听器;
1.HttpSessionBindingListener
javabean被加入和移除时,会触发该监听器;
2.HttpSessionActivationListener
javabean随 Session 对象持久化到一个存储设备中(钝化)和随 Session 对象从一个存储设备中恢复(活化)会触发监听器;

注意:javabean要实现serializable接口,该接口标记对象能以文件的形式存入到硬盘中。是javabean自己感知,故是javabean类实现这两个接口;

示例代码:

	package com.oterman.domain;

	import java.io.Serializable;

	import javax.servlet.http.HttpSessionActivationListener;
	import javax.servlet.http.HttpSessionBindingEvent;
	import javax.servlet.http.HttpSessionBindingListener;
	import javax.servlet.http.HttpSessionEvent;

	public class Person implements Serializable, HttpSessionBindingListener,
			HttpSessionActivationListener {
		private int age;
		private String name;

		public int getAge() {
			return age;
		}

		public void setAge(int age) {
			this.age = age;
		}

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		public void valueBound(HttpSessionBindingEvent arg0) {
			System.out.println("Person Bean 感知到自己被加入了session域中。。。");
		}

		public void valueUnbound(HttpSessionBindingEvent arg0) {
			System.out.println("Person Bean 感知到自己被移除了session域。。");
		}

		public void sessionDidActivate(HttpSessionEvent arg0) {
			System.out.println("Person Bean 感知到自己随着session被活化。。。");
		}

		public void sessionWillPassivate(HttpSessionEvent arg0) {
			System.out.println("Person Bean 感知到自己随着session被钝化到了文件中。。。");
		}

	}


内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值