监听器之 HttpSessionActivation | 学习笔记

简介: 快速学习监听器之 HttpSessionActivation。

开发者学堂课程【Servlet 入门:监听器之 HttpSessionActivation】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/38/detail/889


监听器之 HttpSessionActivation


内容介绍

一、HttpSessionActivation


一、HttpSessionActivation

注意:因为钝化和活化 session,其实就是使用序列化和反序列化技术把 session 从内存保存到硬盘,和把 session 从硬盘加载到内存。

这说明如果 Person 类没有实现serializable,接口,那么当 session 钝化时就不会钝化 Person,而是把 Person session 中移除再钝化!这也说明 ession 活化后, session 中就不在有 Person 对象了。

示例步骤:

先不管H ttpSessionA.ctivationListener 监听器接口,先来配置 Tomcat钝化 session 的参数,把

下面配置文件放到tomcat\conf\catalina\localhost目录下!文件名称为项目名称。

"org.apache.catalina.session.PresistentManger"(maxIdl9swap="1"

"org.apache.catalina.session.FileStore"(directory="mysession")/>

访问项目的 index.jsp 页面,这会使 Tomcat 创建 Session 对象,然后等待一分钟后,查看

Tomcat\work\Catalina\localhost\istenermysession.目录下是否会产生文件,如果产生了,说明钝化session 的配置成功了,可以开始下一步了。

要实现上述的例子,我们首先创建一个类。

然后输入以下代码:

package cn.itcast;

import javax.servlet.http.HttpsessionActivationListener;

import javax.servlet.http.HttpsessionEvent;

public class User implements HttpsessionActivationListener {

public void sessionwillPassivate(HttpsessionEvent se){

system.out.println ( "啊~我陪session去火星了,地球已经不安全了! ");

}

Public void sessionDidActivate(HttpSessionEvent se){

system.out.println("啊~我和session一起重返地球了! ");

}

}

a.jsp 中也将24行更改为 new cn.itcast.User()。而b.jsp不做更改。

之后再重新启动以下服务器。打开网页输入 a.jsp 保存数据再输入 b.jsp 只能看见一个 usual 类的 toString 方法。

之后我们就会发现小 usual 并没有陪 session 一起钝化硬盘上,因为小usual已经死了。因为他已经添加到了 session 里面,而过了一分钟会显示“啊~我陪 session 去火星了,地球已经不安全了!”说明小 usua l已 经死了并不在硬盘上。就好比:session 和小 usual 一起上了去往火星的车而在临上车前,小usual却因为没有票而被赶下来了。而地球毁灭的时候,小 usual 因为没有上车而毁灭了。

而之后我们如果做一个访问的过程。Session 中的小 usual 并不会再出现。

而所谓的火星就是该文件家mysession。只有在此实现了序列化的接口,对象就无法到此。任何能被序列化的接口都必须满足一个前提就是实现序列化接口,而usual 并没有满足序列化接口,所以才“死掉了”。

我们可以根据以下操作来查看我刚刚的字符串类是否实现序列化接口,我们可以看出 string 类型是有的。而 usual 并不可以。

为了保证这一问题我们在第6行加上 java.io.Serializable。这回 usual 就可以跟着session 一起到硬盘之上。

在网站上输入 a.jsp 保存数据,b.jsp 输出。这时就会显示出,表示此事 usual 有了序列化借口。而此时接口的作用就是来监听我们的 usual 是否跟随 session 钝化和活化,并没有实际意义,只不过拿来理解而已。


相关文章
|
12月前
|
Java
25JavaWeb基础 - 监听器
25JavaWeb基础 - 监听器
56 1
|
5月前
|
Java 容器
SpringBoot3 事件和监听器
SpringBoot3 事件和监听器
|
5月前
|
移动开发 前端开发 Java
Flowable 任务监听器与执行监听器的介绍
Flowable 任务监听器与执行监听器的介绍
777 0
|
5月前
javaWeb监听器Listener -自定义监听器类实现
javaWeb监听器Listener -自定义监听器类实现
|
缓存 应用服务中间件 数据库
【JavaWeb】 三大组件之监听器 Listener
在JavaWeb应用程序中,Listener(监听器)是一种机制,用于监听和响应特定的事件。它可以感知并响应与应用程序相关的事件,从而执行相应的逻辑处理。事件是在应用程序运行过程中发生的特定动作或状态改变。例如,Web应用程序的启动和关闭、请求的到达和完成、会话的创建和销毁等都被认为是事件。监听器会注册对这些事件的感兴趣,并在事件发生时调用相应的回调方法来执行预定的业务逻辑。
|
程序员
监听器
监听器
106 0
QGS
|
存储 XML 安全
浅谈入门ServletListener监听器
所有的监听器中的方法,当指定时间发生后,则Web服务器调用该方法。 第一步:创建一个类,实现监听接口和接口方法。
QGS
123 0
|
Java Spring 容器
|
Java Spring
监听器 - 基础篇
监听器 - 基础篇
187 0
监听器 - 基础篇
|
监控 Java 应用服务中间件
监听器第一篇【基本概念、Servlet各个监听器】
监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。。
273 0
监听器第一篇【基本概念、Servlet各个监听器】