Listener监听器----HttpSession对象的生命周期监听器

一、HttpSession对象的生命周期监听器

HttpSessionListener接口定义了HttpSession对象生命周期的监听行为。

void sessionCreated(HttpSessionEvent se)

HttpSession对象创建后会触发该监听器方法,并将已创建HttpSession对象传递到该方法中

void sessionDestoryed(HttpSessionEvent se)

HttpSession对象在销毁之前会触发该监听方法,并将要销毁的HttpSession对象传递到该方法中

二、创建能够监听HttpSession生命周期的监听器

web.xml

XML 复制代码
    <listener>
        <listener-class>cn.itcast.listener.HttpSessiontLifecycleListener</listener-class>
    </listener>

实现类:

java 复制代码
package cn.itcast.listener;

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

public class HttpSessiontLifecycleListener implements HttpSessionListener {
    /*
     监听HttpSession 对象创建的监听方法
     */
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        System.out.println("sessionCreated");
        System.out.println(se.getSession());
    }
    /*
     监听HttpSession 对象创建的监听方法
     */
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        System.out.println("sessionDestroyed");
        System.out.println(se.getSession());
    }
}

三、HttpSession对象的属性操作监听器

HttpSessionAttributeListener接口定义了对于HttpSession对象属性操作的监听行为。

void attributeAdded(HttpSessionBindingEvent se)

HttpSession对象中添加属性是会触发该监听方法,并将HttpSession对象传递到该方法中,触发事件的方法HttpSession.setAttribute("key","value")

void attributeRemove(HttpSessionBindingEvent se)

HttpSession对象中添加属性是会触发该监听方法,并将HttpSession对象传递到该方法中,触发事件的方法HttpSession.removeAttribute("key","value")

void attributeReplaced(HttpSessionBindingEvent se)

HttpSession对象中添加属性是会触发该监听方法,并将HttpSession对象传递到该方法中,触发事件的方法HttpSession.setAttribute("key","value")

实例代码:

servlet:

java 复制代码
package cn.itcast.listener;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * 测试HttpSession属性监听器
 */
@WebServlet("/sessionAttr.do")
public class HttpSessionAttrServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取httpSession对象
        HttpSession httpSession = req.getSession();
        httpSession.setAttribute("key","test");
        httpSession.setAttribute("key","test2");
        httpSession.removeAttribute("key");
    }
}

监听:

java 复制代码
package cn.itcast.listener;

import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;

public class HttpSessionAttrListener implements HttpSessionAttributeListener {
    @Override
    public void attributeAdded(HttpSessionBindingEvent se) {
        System.out.println("-------HttpSession---Start attributeAdded----------");
        System.out.println("Name:"+se.getName()+" Value:"+se.getValue());
        System.out.println("-------HttpSession---End attributeAdded----------");
    }

    @Override
    public void attributeRemoved(HttpSessionBindingEvent se) {
        System.out.println("-------HttpSession---Start attributeRemoved----------");
        System.out.println("Name:"+se.getName()+" Value:"+se.getValue());
        System.out.println("-------HttpSession---End attributeRemoved----------");
    }

    @Override
    public void attributeReplaced(HttpSessionBindingEvent se) {
        System.out.println("-------HttpSession---Start attributeReplaced----------");
        System.out.println("Name:"+se.getName()+" Value:"+se.getValue());
        System.out.println("-------HttpSession---End attributeReplaced----------");
    }
}

输出结果:

-------HttpSession---Start attributeAdded----------

Name:key Value:test

-------HttpSession---End attributeAdded----------

-------HttpSession---Start attributeReplaced----------

Name:key Value:test

-------HttpSession---End attributeReplaced----------

-------HttpSession---Stary attributeRemoved----------

Name:key Value:test2

-------HttpSession---End attributeRemoved----------

相关推荐
景天科技苑1 分钟前
【vue3+vite】新一代vue脚手架工具vite,助力前端开发更快捷更高效
前端·javascript·vue.js·vite·vue项目·脚手架工具
飞滕人生TYF5 分钟前
java Queue 详解
java·队列
小行星12512 分钟前
前端预览pdf文件流
前端·javascript·vue.js
小行星12519 分钟前
前端把dom页面转为pdf文件下载和弹窗预览
前端·javascript·vue.js·pdf
武子康27 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
Lysun00129 分钟前
[less] Operation on an invalid type
前端·vue·less·sass·scss
武子康29 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言35 分钟前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥42 分钟前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
J总裁的小芒果44 分钟前
Vue3 el-table 默认选中 传入的数组
前端·javascript·elementui·typescript