博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Listener--HttpSessionActivationListener(钝化、活化)API、配置和使用详解
阅读量:2443 次
发布时间:2019-05-10

本文共 3687 字,大约阅读时间需要 12 分钟。

HttpSessionActivationListener

实现了HttpSessionActivationListener接口的 JavaBean 对象可以感知自己被活化和钝化的事件

当绑定到 HttpSession 对象中的对象将要随 HttpSession 对象被钝化之前,web 服务器调用如下方法sessionWillPassivate(HttpSessionBindingEvent event) 方法
当绑定到 HttpSession 对象中的对象将要随 HttpSession 对象被活化之后,web 服务器调用该对象的 void sessionDidActive(HttpSessionBindingEvent event)方法

  • 钝化状态:

    就是将Session内存中的对象持久化(序列化)到磁盘

  • 活化状态:

    就是将磁盘上的对象再次恢复到session内存中

HttpSessionActivationListener API在这里插入图片描述

配置HttpSessionActivationListener

可以通过配置文件指定:

  • 多长时间不使用被钝化
  • 钝化文件的位置

在META-INF下创建一个context.xml

示例:

创建User类,实现HttpSessionActivationListener和Serializable接口:

package pers.zhang.domain;import javax.servlet.http.HttpSessionActivationListener;import javax.servlet.http.HttpSessionEvent;import java.io.Serializable;/** * @author zhang * @date 2019/9/20 - 19:14 */public class User implements HttpSessionActivationListener, Serializable {
private Integer userId; private String userName; public User(Integer id, String name){
this.userId = id; this.userName = name; } public Integer getUserId() {
return userId; } public String getUserName() {
return userName; } public void setUserId(Integer userId) {
this.userId = userId; } public void setUserName(String userName) {
this.userName = userName; } //钝化 @Override public void sessionWillPassivate(HttpSessionEvent httpSessionEvent) {
System.out.println("User被钝化..."); } //活化 @Override public void sessionDidActivate(HttpSessionEvent httpSessionEvent) {
System.out.println("User活化..."); }}

将User存入Session:

package pers.zhang.servlet;import pers.zhang.domain.User;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;import java.util.Date;/** * @author zhang * @date 2019/9/20 - 19:20 */public class SetUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获得Session HttpSession session = request.getSession(); //将User放到session中 User user = new User(1, "Tom"); session.setAttribute("user", user); System.out.println("user被放到session中:" + new Date().toString()); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }}

从session中取出User:

package pers.zhang.servlet;import pers.zhang.domain.User;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import java.io.IOException;/** * @author zhang * @date 2019/9/20 - 19:32 */public class GetUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获得session HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); System.out.println("user被活化:" + user.getUserId() + "," + user.getUserName()); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response); }}

启动服务器,并访问SetUserServlet,控制台输出:

user被放到session中:Fri Sep 20 20:13:01 CST 2019

关闭服务器,控制台输出:

User被钝化...

再次启动服务器,访问GetUserServlet,控制台输出:

user被活化:1,Tom

转载地址:http://fisqb.baihongyu.com/

你可能感兴趣的文章
轻松搞定Java内存泄漏(转)
查看>>
Java学习之值传递(转)
查看>>
linux中crontab命令(转)
查看>>
牛人请进 小弟跪求(转)
查看>>
Linux版本凌乱痛失市场(转)
查看>>
大家好,新学生。 请问怎么升级Redhat9.0 kernel 2.4.X-->2.6.18 的详细过程(转)
查看>>
FreeBSD6.1+无线+永中......桌面安装【附笔记】(转)
查看>>
adsl设置(转)
查看>>
Wii将有一个可升级的Linux操作系统(转)
查看>>
Linux机为先锋智能机和PDA06销量大(转)
查看>>
Oracle与SQL Server在企业应用中的比较(转)
查看>>
让FreeBSD使用ntpd同步时间(转)
查看>>
用cat命令查看文件内的特殊字符(转)
查看>>
debian sid下vmware不能运行一则(转)
查看>>
Linux操作系统套接字编程的5个隐患(转)
查看>>
Ubuntu Linux:定制Ubuntu安装CD(转)
查看>>
调查显示:企业级Linux用户不断攀升(转)
查看>>
SCO UNIX学习宝典 高级进阶(转)
查看>>
Oracle9i RAC for RedFlag Linux DC4.1 32bit 安装流程(转)
查看>>
Sybase和Oracle安装过程中常遇到的问题(转)
查看>>