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

2024-01-09 09:44

本文主要是介绍Listener监听器----HttpSession对象的生命周期监听器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

void sessionCreated(HttpSessionEvent se)

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

void sessionDestoryed(HttpSessionEvent se)

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

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

 web.xml

    <listener><listener-class>cn.itcast.listener.HttpSessiontLifecycleListener</listener-class></listener>

 实现类:

package cn.itcast.listener;import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;public class HttpSessiontLifecycleListener implements HttpSessionListener {/*监听HttpSession 对象创建的监听方法*/@Overridepublic void sessionCreated(HttpSessionEvent se) {System.out.println("sessionCreated");System.out.println(se.getSession());}/*监听HttpSession 对象创建的监听方法*/@Overridepublic 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:

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 {@Overrideprotected 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");}
}

 监听:

package cn.itcast.listener;import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;public class HttpSessionAttrListener implements HttpSessionAttributeListener {@Overridepublic 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----------");}@Overridepublic 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----------");}@Overridepublic 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----------

这篇关于Listener监听器----HttpSession对象的生命周期监听器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/586697

相关文章

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu

Maven(插件配置和生命周期的绑定)

1.这篇文章很好,介绍的maven插件的。 2.maven的source插件为例,可以把源代码打成包。 Goals Overview就可以查看该插件下面所有的目标。 这里我们要使用的是source:jar-no-fork。 3.查看source插件的example,然后配置到riil-collect.xml中。  <build>   <plugins>    <pl

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

PHP7扩展开发之对象方式使用lib库

前言 上一篇文章,我们使用的是函数方式调用lib库。这篇文章我们将使用对象的方式调用lib库。调用代码如下: <?php $hello = new hello(); $result = $hello->get(); var_dump($result); ?> 我们将在扩展中实现hello类。hello类中将依赖lib库。 代码 基础代码 这个扩展,我们将在say扩展上增加相关代码。sa

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

【Vue】关于Vue3的生命周期

目录 Vue3中新增了一个setup生命周期函数:(1) setup执行的时机是在beforeCreate生命周期函数之前执行,在setup函数中是不能通过this来获取实例的;(2) 为了命名的统一性,将beforeDestroy 改名为 beforeUnmount,destroyed 改名为 unmounted 生命周期函数: setup —— 不能通过this来获

类和对象的定义和调用演示(C++)

我习惯把类的定义放在头文件中 Student.h #define _CRT_SECURE_NO_WARNINGS#include <string>using namespace std;class student{public:char m_name[25];int m_age;int m_score;char* get_name(){return m_name;}int set_name

09 生命周期

生命周期 beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeDestorydestoryed 辣子鸡:香辣入口,犹如吃了炫迈一样 - - - 根本停不下来 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport"

react笔记 8-19 事件对象、获取dom元素、双向绑定

1、事件对象event 通过事件的event对象获取它的dom元素 run=(event)=>{event.target.style="background:yellowgreen" //event的父级为他本身event.target.getAttribute("aid") //这样便获取到了它的自定义属性aid}render() {return (<div><h2>{

Maven生命周期:深入理解构建过程

目录 1. Maven生命周期简介 2. 默认生命周期的阶段 3. 清理生命周期 4. 站点生命周期 5. Maven生命周期的灵活性 6. 结论         在Java开发中,Maven是一个不可或缺的工具,它通过自动化项目的构建、依赖管理和文档生成等任务,极大地提高了开发效率。Maven的核心之一是其构建生命周期,它定义了项目构建过程中的一系列阶段。在这篇文章中,我们将深