
JavaWeb学习笔记九:监听器Listener学习,三大域对象的生命周期,邮件发送原理
ServletContextListener:用于监听ServletContext对象的状态变化。例如ServletContext创建、破坏以及属性的改变。 HttpServletListener:用于监听HttpServletRequest和HttpServletResponse的状态变化。 .HttpSessionListener:用于监听 HttpSession 对象的状态变化,包括创建、破坏以及属性的改变。 ServletRequestListener和 ServletResponseListener:用于监听Request和Response对象的状态变化。 ApplicationListener:用于监听ServletContext的状态变化。 SessionActivationListener:用于监听 HttpSession 对象的激活与钝化状态变化。 创建一个类并实现ServletContextListener接口。 覆盖监听器的核心方法: 重置(Preload) 初始化(Initialized) 销毁(Destroyed) 创建一个类并实现ServletContextAttributeListener接口。 覆盖 创建(当客户端请求生成时)。 会话维持(默认30分钟过期,可通过配置改变)。 销毁(当会话超时或客户端主动关闭时)。 创建一个实现HttpSessionActivationListener接口的类。 覆盖 创建一个类并实现对应域对象的属性监听接口: 在 减少内存占用:大规模的数据不再占据内存,降低了服务器性能负担。 支持长时间会话:适合需要长时间保存的场景,例如电子商务中的购物车数据。 创建一个实现 覆盖钝化与活化的相关方法。 将钝化配置好的HttpServletRequest和 HttpSession 对象注明保存路径。 在
发布日期:2021-05-28 16:47:33
浏览次数:35
分类:精选文章
本文共 3064 字,大约阅读时间需要 10 分钟。
监听器Listener学习
1. 监听器的基本概念与类型
监听器是一种用来感知和响应对象状态变化的程序组件。当对象发生变化时,监听器会自动执行相应的操作。
在Java Web开发中主要有以下几种类型的监听器:
2. ServletContext监听器的创建与使用
要创建一个ServletContext监听器,可以按照以下步骤进行:
contextDestroyed(ServletContextEvent sce)
:当ServletContext被销毁时调用。context Initialized(ServletContextEvent sce)
:当ServletContext被创建时调用。
ServletContext监听器的生命周期
ServletContext对象的生命周期主要包括以下几个阶段:
ServletContext对象的默认保存时间是30分钟,但可以通过配置来改变。
监听ServletContext属性变化
除了监听ServletContext的创建和销毁,开发者还可以通过实现ServletContextAttributeListener
接口来监听ServletContext属性的变化。具体实现步骤如下:
valueadded
和removed
方法,用于监听属性的添加和移除。3. HttpSession监听器的应用
HttpSession的生命周期
HttpSession对象的生命周期主要包括以下几个阶段:
HttpSession的属性变化监听
要实现HttpSession属性变化的监听,可以按照以下步骤进行:
sessionWillPassivate
和sessionDidActivate
方法,用于监听会话的钝化和激活。4. 监听三大域对象的属性变化
在Java Web开发中,三大域对象(ServletContext、request和 HttpSession)的属性变化都可以通过特定类型的监听器来监测。
监听属性变化的实现
- ServletContext:实现
ServletContextAttributeListener
。 - HttpServletRequest:实现
ServletRequestAttributeListener
。 - HttpSession:实现
SessionAttributeListener
。
web.xml
中注册监听器。5. 钝化与活化HttpSession
钝化的意义
钝化(即将 HttpSession 对象 serialization到文件系统中保存)有以下几个优点:
钝化与活化的实现
要实现HttpSession的钝化与活化,可以按照以下步骤进行:
HttpSessionActivationListener
接口的类。web.xml
中配置必要的参数以指定保存目录和钝化机制。代码示例
以下是一个简单的HttpSession钝化与活化的实现代码示例:
public class SessionManager implements HttpSessionActivationListener { private String sessionId; public String getSessionId() { return sessionId; } public void setSessionId(String sessionId) { this.sessionId = sessionId; } @Override public void sessionWillPassivate(HttpSessionEvent se) { System.out.println("Will be passivated: " + se.getId()); // 因此,调用save方法保存当前会话数据到磁盘 save(se); } @Override public void sessionDidActivate(HttpSessionEvent se) { System.out.println("Did active: " + se.getId()); // 从磁盘中读取并恢复会话数据 load(se); } private void save(HttpSessionEvent se) { // TODO: 实现数据的保存逻辑 } private void load(HttpSessionEvent se) { // TODO: 实现数据读取逻辑 }}
6. 邮箱服务器的实现原理
电子邮件的发送通常遵循以下流程:
邮件发送过程:
- 发件人通过POP3协议发送邮件到自己的邮件服务器。
- 邮件服务器通过SMTP协议将邮件发送到目标邮件服务器。
- 目标邮件服务器通知收件人邮件到达。
邮件接收过程:
- 收件人通过POP3协议从邮件服务器下载邮件。
- 集成邮件客户端查看邮件。
通过以上机制,电子邮件能够在不同邮件服务器之间传输完成。
总结
通过以上学习,可以清楚地了解到如何利用Java Web开发中的不同类型的监听器来监测和管理各种域对象的状态变化。而在实际开发中,这些技术在项目的需要中可以灵活运用,但需要结合具体的业务需求来决定何种类型的监听器最佳使用。
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月21日 22时19分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15
修改linux 系统自带日志系统systemd-journald && 参数
2019-03-15
Redis工具类
2019-03-15
Numi3 for Macmini文本计算器
2019-03-15
Long型转成Calendar,并获取年月日操作
2019-03-15
淘宝而已,随手就爬,保姆级教程带你装X带你飞!!!
2019-03-15
SpringBoot与缓存(JSR-107、Spring缓存抽象)
2019-03-15
微服务之Gateway实战讲解,小白必备哦!
2019-03-15
ERROR 总结
2019-03-15
Flutter ios打包 白屏问题
2019-03-15
数据结构与算法(C语言)——图的两种遍历(DFS和BFS)
2019-03-15
C语言—— 符号函数
2019-03-15
蓝桥杯Java 试题 E: 排序
2019-03-15
钞票最优解
2019-03-15
查找最小值栈的O(1)
2019-03-15
淘宝天猫双十一养猫组队怎么踢人
2019-03-15
Java面试题整理,闭关在家37天“吃透”这份345页PDF,纯干货
2019-03-15
Java攒了一个月的面试题及解答,成功入职字节跳动
2019-03-15