监听器listener

文章目录

    • 监听器( listener)
      • 对Application内置对象监听的语法和配置
      • 对session内置对象监听的语法和配置

监听器( listener)

对象与对象的关系:

继承关联

tomcat一启动创建的顺序:监听器,config,application(全局初始化参数),filter,servlet(有0 )

**概念:**由Java编写的WEB组件,主要完成对内置对象状态的变化(创建,销毁)和属性的变化进行监听,做进一步的处理。
作用:

  1. 对session内置对象状态的变化(创建,销毁)和属性的变化进行监听
  2. 对application内置对象状态的变化(创建,销毁)和属性的变化进行监听

对Application内置对象监听的语法和配置

  • ServletContextDemo.java

    package cn.mldn.lxh.listener ;
    
    import javax.servlet.* ;
    
    public class ServletContextDemo
    	implements ServletContextListener,ServletContextAttributeListener
    {
    	private ServletContext application = null ;
    	// 实现方法
    	public void contextInitialized(ServletContextEvent sce)
    	{
    		this.application = sce.getServletContext() ;
    		System.out.println("** 上下文初始化 ...") ;
    		System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;
    	}
    	public void contextDestroyed(ServletContextEvent sce)
    	{
    		System.out.println("** 上下文销毁 ...") ;
    	}
    
    	public void attributeAdded(ServletContextAttributeEvent scab)
    	{
    		System.out.println("** 增加属性:"+scab.getName()+" --> "+scab.getValue()) ;
    	}
    	public void attributeRemoved(ServletContextAttributeEvent scab)
    	{
    		System.out.println("** 删除属性:"+scab.getName()+" --> "+scab.getValue()) ;
    	}
    	public void attributeReplaced(ServletContextAttributeEvent scab)
    	{
    		System.out.println("** 替换属性:"+scab.getName()+" --> "+scab.getValue()) ;
    	}
    };
    
    /*
      <listener>
    	<listener-class>cn.mldn.lxh.listener.ServletContextDemo</listener-class>
      </listener>
    */
    
  • appdemo.jsp

    <%
    getServletContext().setAttribute("username","jack");
    //getServletContext().removeAttribute("username");
    %>
    username:<%=getServletContext().getAttribute("username")%>
    

    在这里插入图片描述

对session内置对象监听的语法和配置

  • sessiondemo.jsp

    <%	
       session.setAttribute("name","jack"); 
      // session.removeAttribute("name") ;
       //session.invalidate() ;
    %>
         <h1> name: ${name} </h1>
    
  • HttpSessionDemo .java

    package cn.mldn.lxh.listener ;
    import javax.servlet.http.* ;
    public class HttpSessionDemo 
    	implements HttpSessionListener,HttpSessionAttributeListener
    {
    	private HttpSession session ;
    	// 实现方法
    	public void sessionCreated(HttpSessionEvent se)
    	{
    		this.session = se.getSession() ;
    		System.out.println("** Session 创建 ....") ;
    		System.out.println("** SessionID --> "+this.session.getId()) ;
    	}
    	public void sessionDestroyed(HttpSessionEvent se)
    	{
    		System.out.println("** Session 销毁 ....") ;
    	}
    	public void attributeAdded(HttpSessionBindingEvent se)
    	{
    		System.out.println("** Session 增加属性:"+se.getName()+" --> "+se.getValue()) ;
    	    System.out.println("** 获得Session "+se.getSession().getId()) ;
    	}
    	public void attributeRemoved(HttpSessionBindingEvent se)
    	{
    		System.out.println("** Session 删除属性:"+se.getName()+" --> "+se.getValue()) ;
    	}
    	public void attributeReplaced(HttpSessionBindingEvent se)
    	{
    		System.out.println("** Session 替换属性:"+se.getName()+" --> "+se.getValue()) ;
    	}
    };
    /*
      <listener>
    	<listener-class>cn.mldn.lxh.listener.HttpSessionDemo</listener-class>
      </listener>
    */
    

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943247.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LabVIEW数字式气压计自动检定系统

开发了一个基于LabVIEW开发的数字式气压计自动检定系统。在自动化检定PTB220和PTB210系列数字气压计&#xff0c;通过优化硬件组成和软件设计&#xff0c;实现高效率和高准确度的检定工作&#xff0c;有效降低人力成本并提升操作准确性。 项目背景 随着自动气象站的广泛部署&a…

在linux系统中使用jdbc访问sqlite数据库时报错“java.lang.UnsatisfiedLinkError”

1. 异常描述 在linux系统中使用jdbc访问sqlite数据库时出现如下错误提示&#xff1a; 2. 异常分析 可能是当前使用版本的sqlite-jdbc-xxx.jar版本有bug。 3. 异常解决 我是从3.8.9.1版本换到了3.16.1版本就好了。

Java(Sprigboot) 项目调用第三方 WebService 接口实现方式

文章目录 Java(Sprigboot) 项目调用第三方 WebService 接口实现方式WebService 简介业务场景描述WSDL 文档请求地址及方式接口请求/响应报文 代码实现1、接口请求/响应报文 JSON 准备&#xff08;1&#xff09;TransData&#xff08;2&#xff09;BaseInfo、InputData、OutputD…

基础爬虫案例实战

我们已经学习了多进程、requests、正则表达式的基本用法,但还没有完整地实现过一个爬取案例。这一节&#xff0c;我们就来实现一个完整的网站爬虫&#xff0c;把前面学习的知识点串联起来&#xff0c;同时加深对这些知识点的理解。 准备工作 我们需要先做好如下准备工作。 安…

Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果

目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告&#xff1a;HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…

C++-----线性结构

C线性结构模板 概念&#xff1a;线性结构是一种数据元素之间存在一对一线性关系的数据结构&#xff0c;如数组、链表、栈、队列等。C中的模板可以让我们编写通用的代码&#xff0c;适用于不同的数据类型&#xff0c;而不必为每种数据类型都重复编写相同的代码结构。作用&#…

六大基础深度神经网络之CNN

左侧是传统卷积网络输入的是一列像素点&#xff0c;右侧是卷积神经网络&#xff0c;输入的是具有长宽通道数的原始图像 下图为整体架构。卷积层可以认为提取特征&#xff0c;池化层是压缩特征。全连接层是把图像展平然后计算10个类别的概率值 给出一张图像不同区域的特征不同&a…

AIOps平台的功能对比:如何选择适合的解决方案?

定义与概念 AIOps&#xff0c;即人工智能运维&#xff08;Artificial Intelligence for IT Operations&#xff09;&#xff0c;是将人工智能技术应用于 IT 运维领域&#xff0c;以实现自动化、智能化的运维管理。它通过整合大数据、机器学习等先进技术&#xff0c;对海量运维数…

pr基础(3)-lumetri

这篇应该是基础的完结篇了&#xff0c;主要记录调色方面的相关知识。 主要的内容是lumetri的使用 Lumetri的翻译其实来源于两个部分的组合。"Lume"这个词源于拉丁语&#xff0c;意为明亮度或光亮度&#xff0c;是Luminance (Luma) 的缩写&#xff0c;强调了光线的强…

【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!

目录 快速安装使用 . 1.简介 2.安装 3.配置 4.补充 官方盗料参考 快速安装使用 快速安装使用&#xff0c;四步即可&#xff1a; #Ubuntu/Debian系统 sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install thefuck #编辑bashrc配置文件 vim ~/.bashrc…

基于pytorch的深度学习基础3——模型创建与nn.Module

三 模型创建与nn.Module 3.1 nn.Module 模型构建两要素&#xff1a; 构建子模块——__init()__拼接子模块——forward&#xff08;&#xff09; 一个module可以有多个module&#xff1b; 一个module相当于一个运算&#xff0c;都必须实现forward函数&#xff1b; 每一个mod…

智慧农业物联网传感器:开启农业新时代

在当今科技飞速发展的时代&#xff0c;农业领域正经历着一场前所未有的变革&#xff0c;而智慧农业物联网传感器无疑是这场变革中的关键利器。它宛如农业的 “智慧大脑”&#xff0c;悄然渗透到农业生产的各个环节&#xff0c;为传统农业注入了全新的活力&#xff0c;让农业生产…

OpenLayers实现渐变透明填充和光效边界

之前在cesium中做过多边形的填充使用渐变透明的效果,那个时候使用的是着色器,利用距离中心点的距离去写shader函数,距离中心越远颜色透明度越高,那么本文我们在openlayers中来实现这一过程。老规矩还是先来看一下效果: 好接下来开始讲述原理,首先关于边界发光的原理我在O…

低代码开发中 DDD 领域驱动的页面权限控制

在低代码开发的领域中&#xff0c;应用安全与灵活性是两大关键考量因素。领域驱动设计&#xff08;DDD&#xff09;作为一种在软件设计领域广泛应用且颇具影响力的方法论&#xff0c;正逐渐在低代码开发的页面权限控制方面展现出其独特的价值与潜力。本文旨在客观地探讨如何借助…

B端UI设计规范是什么?

一、B端UI设计规范是什么&#xff1f; B端UI设计规范是一套针对企业级应用界面设计的全面规则和标准&#xff0c;旨在确保产品界面的一致性、可用性和用户体验。 二、B端UI设计规范要素说明 B端UI设计的基本要素包括设计原则、主题、布局、颜色、字体、图标、按钮和控件、交互…

GitLab 服务变更提醒:中国大陆、澳门和香港用户停止提供服务(GitLab 服务停止)

目录 前言 一. 变更详情 1. 停止服务区域 2. 邮件通知 3. 新的服务提供商 4. 关键日期 5. 行动建议 二. 迁移指南 三. 注意事项 四. 相关推荐 前言 近期&#xff0c;许多位于中国大陆、澳门和香港的 GitLab 用户收到了一封来自 GitLab 官方的重要通知。根据这封邮件…

nginx Rewrite 相关功能

一、Nginx Rewrite 概述 定义 Nginx 的 Rewrite 模块允许对请求的 URI 进行重写操作。它可以基于一定的规则修改请求的 URL 路径&#xff0c;然后将请求定向到新的 URL 地址&#xff0c;这在很多场景下都非常有用&#xff0c;比如实现 URL 美化、网站重构后的 URL 跳转等。主要…

适用于Synology NAS的在线办公套件:ONLYOFFICE安装指南

使用 Synology NAS 上的 ONLYOFFICE 文档&#xff0c;您能在私有云中直接编辑文本文档、电子表格、演示文稿和 PDF&#xff0c;确保工作流程既安全又高效。本指南将分步介绍如何在 Synology 上安装 ONLYOFFICE 文档。 关于 Synology Synology NAS&#xff08;网络附加存储&…

[按键精灵IOS安卓版][脚本基础知识]按键post基本写法

这一期我们来讲按键post的写法&#xff0c;希望通过本期的学习&#xff0c;实现常见的post提交都能编写。 下面开始讲解&#xff1a; 一、使用的命令&#xff1a;url.httppost 选用这个命令的理由是它的参数比较全。 二、post请求都有哪些参数&#xff08;可能用到&#xf…

如何检查交叉编译器gcc工具链里是否有某个库(以zlib库和libpng库为例)

freetype 依赖于 libpng&#xff0c;libpng 又依赖于 zlib&#xff0c;所以我们应该&#xff1a;先编译 安装 zlib&#xff0c;再编译安装 libpng&#xff0c;最后编译安装 freetype。 但是&#xff0c;有些交叉编译器工具链里已经有 zlib库和freetype&#xff0c;所以我们需要…