学习使用J2EE Web应用的事件功能

web.xml中listener作用及使用 一.WebContextLoaderListener 监听类 它能捕捉到服务器的启动和停止,在启动和停止触发里面的方法做相应的操作! 它必须在web.xml 中配置才能使用,是配置监听类的 二.下面是搜集的一些listener方面的知识 简例一 监听用户上线与退出,显示 阅读详情
概述:

   在Servlet2.3规范中,Web应用事件是新增加的部分。它让你能最大程度地控制你的Web应用。在本文中,我们将学习两个很重要的应用事件:
  • 应用的启动和停止
  • Session的创建和失效
    如它们的名字那样,应用启动事件发生在你的应用第一次被servlet容器装载和启动的时候;停止事件发生在Web应用停止的时候。 
        Session创建事件发生在每次一个新的session创建的时候,类似地Session失效事件发生在每次一个Session失效的时候。为了使用这些Web应用事件为你做些有用的事情,我们必须创建和使用一些特殊的“监听”类。下面,我们将研究这些监听类到地是什么以及我们如何去使用它们。
  • 监听类:

    它们是实现了下边两个接口中任何一个接口的简单的java类:
  • javax.servlet.ServletContextListener 
  • javax.servlet.http.HttpSessionListener  
        如果你想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;如果你想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。 让我们看看在这些接口中你必须要实现的方法。
    1.ServletContextListener :
    接口包括如下两个方法:
  • public void contextInitialized(ServletContextEvent sce); 
  • public void contextDestroyed(ServletContextEvent sce); 
     
       如果你实现了一个接口,那你就必须实现它所有的方法。因此,如果你想利用应用的启动和停止事件,你就需要创建一个Java类并实现ServletContextListener接口。下边是这样的一个类的例子:
     
    /*File : ApplicationWatch.java*/
    import javax.servlet.ServletContextListener;
    import javax.servlet.ServletContextEvent;
    public class ApplicationWatch implements ServletContextListener {
    public static long applicationInitialized = 0L;
    /* 应用启动事件 */
    public void contextInitialized(ServletContextEvent ce) {
    applicationInitialized = System.currentTimeMillis();
    }
    /*应用停止事件 */
    public void contextDestroyed(ServletContextEvent ce) {}
    }

       在上边的代码中,ApplicationWatch类实现了ServletContextListener接口。它实现了接口中的两个方法,但只用了其中的一个方法,另一个方法中没有写任何代码。这个类把应用启动的时间记录在一个可以从其它应用类中存取应用启动时间的public static变量中。 

       我将很快解释如何告诉服务器我们有这个监听类,但首先让我们看看HttpSessionListener接口有什么不同的方法。
    2.HttpSessionListener :
    这个接口也只包含两个方法,分别对应于Session的创建和失效:
  • public void sessionCreated(HttpSessionEvent se); 
  • public void sessionDestroyed(HttpSessionEvent se);

       如上边的ApplicationWatch例子那样,我们也创建了一个实现HttpSessionListener接口的类。如下:
    /*File : SessionCounter.java*/
    import javax.servlet.http.HttpSessionListener;
    import javax.servlet.http.HttpSessionEvent;
    public class SessionCounter implements HttpSessionListener {
    private static int activeSessions =0;
    /* Session创建事件 */
    public void sessionCreated(HttpSessionEvent se) {
           activeSessions++;
    }
    /* Session失效事件 */
    public void sessionDestroyed(HttpSessionEvent se) {
    if(activeSessions>0)activeSessions--;
    }

    public static int getActiveSessions() {
    return activeSessions;
    }
    }

       在上边的代码中,SessionCounter类实现了HttpSessionListener接口,其目的是计算活动会话的数量。
       好了,我们已经学习了什么是Web应用事件,有什么接口可以用以及看到了一些实现这些接口的例子。让我们看看如何告诉应用服务器我们有这些监听类。

    Web.xml :

       我们通过把类路径加入/WEB-INF/web.xml文件的标签<listener>中来告诉服务器我们的监听类。下边是一个web.xml文件的例子:
    <!-- Web.xml -->
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">
    <web-app>
    <!-- Listeners -->
    <listener>
    <listener-class>
    com.stardeveloper.web.listener.SessionCounter
    </listener-class>
    </listener>
    <listener>
    <listener-class>
    com.stardeveloper.web.listener.ApplicationWatch</listener-class>
    </listener>
    </web-app>
       如上所示,在web.xml文件中声明监听类是非常简单的。现在,每次的服务器的启动和停止,会话的创建和失效,配置好的监听类的相应的方法就会被调用。就这么简单!

    总结:

       在本文中我们学习了什么是Web应用事件和我们如何通过创建特殊的“监听”类来使用它们。之后我们分别创建了两个实现了ServletContextListener和HttpSessionListener接口的类。我们也学习了如何在web.xml文件中使用专门的<listener>和<listener-class>标签来声明这些监听类。
JPetStore项目分析——分析一个典型J2EE应用web层的实现 关于JpetStore(http://www.jfox.cn/jpetstore/  http://www.ibatis.com/jpetstore/jpetstore.html)JPetStore是Sun公司开发的,在大众化的宠物商店程序基础上完全重写的,最早的基于J2EE平台的宠物商店网络应用服务程序。与其它的PetStore最本质的不同是JPetStore使用了类似Microsoft网络 阅读详情

相关推荐

Ollama最新快速上手指南:从安装到精通本地AI模型部署

想让Ollama跑你的"私房模型"?三种主流格式全支持,总有一款适合你!GGUF格式(推荐新手首选)创建Modelfile文件:执行创建命令:运行你的专属模型:PyTorch/Safetensors格式(适合进阶玩家)先用库测试模型能否正常加载确保模型结构完整后再导入Ollama官方文档有详细转换指南专业小贴士GGUF格式最轻量,PyTorch最灵活,Safetensors最安全遇到问题?试试用llama.cpp进行格式转换7B参数模型推荐使用q4_0量化级别想让AI用马里奥。

全世界的博客 2309

web学习:web.xml使用:listener标签的使用

web学习:web.xml使用:listener标签的使用1.认识web.xml1.1 listener标签1.2 简单使用 1.认识web.xml 从零开始学习java web,学习web最开始就不得不说web.xml,以前只知道web.xml对web应用来说很重要,却不知道为什么,现在来记录下学习web.xml的标签。 web.xml的加载过程(引用) 在web-app元素内,元素的配置顺序与...

qq_17275841的博客 3814

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

web.xml中Listener的作用

的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,// 在整个web应用销毁之前调用,将所有应用空间所设置的内容清空。// 在整个web应用下面启动的时候做一些初始化的内容添加工作。// 供整个web应用的使用(获取数据库连接)// 通过这个事件可以获取整个应用的空间。// 应用监听器的初始化方法。// 应用监听器的销毁方法。...

m0_56162492的博客 1144

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4621

Rocky Linux 9 离线环境Docker部署实战:从依赖打包到服务启动

本文提供了一份详尽的Rocky Linux 9离线环境Docker部署实战指南。针对无法访问外网的生产或内网服务器,文章详细讲解了如何在联网跳板机上下载Docker二进制包及所有系统依赖RPM包,并完成打包。随后,手把手指导在离线服务器上进行依赖安装、二进制文件部署、systemd服务配置、SELinux与防火墙调优,最终实现Docker服务的成功启动与验证。

weixin_28363123的博客 138

web.xml 中listener配置

前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇Listener的,Filter和Listener在项目中是经常用到的,巧妙的使用可以达到事半功倍的效果。故把两者的用法总结一下...

xueyunzi1的博客 674

【OpenClaw 故障排查完全指南】

OpenClaw 故障排查指南摘要 本指南针对OpenClaw 2026.2.26版本常见问题提供解决方案,适用于Windows/Linux/macOS平台。 核心问题及修复方案: 飞书插件连接失败:删除冲突插件或重装OpenClaw Ollama认证错误:设置环境变量OLLAMA_API_KEY="ollama-local" 配置警告:可安全忽略的安全扫描提示 端口占用:查找并终止占用18789端口的进程 插件重复加载:清理重复插件目录 快速修复: 提供一键修复PowerShell脚本

weixin_37572294的博客 1万+

配置web项目启动时,服务器启动时执行该事件

1.配置web.xml文件: 监听器的路径 2.编写java 类 package com.ronhe.romp.core.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.http.

nly19900820的博客 466

Unity 之如何使用Pico4u锚点功能实现一个世界锁GameRoot

摘要 空间锚点技术是混合现实(MR)应用的核心,能永久记录虚拟物体的空间位置。文章介绍了在Unity中使用Pico SDK实现空间锚点的完整流程:1)环境配置需安装XR模块和Pico SDK;2)关键操作包括启动空间感知、创建/删除/查询/更新锚点;3)提供了经典应用案例,通过GameRoot节点实现场景固定和锚点同步。源码展示了基于XR交互工具包的锚点抓取与位置更新实现,为MR开发提供了实用参考方案。

TxNet 972

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2590

学习使用J2EE Web应用的事件功能-Java基础-Java-编程开发

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/javascript"

java专栏 329

为什么idea已经改了UTF-8还是乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1577

基于j2ee的web应用

本文已经在《微型机与应用》发表,并被万方等多个数据库录用。  基于j2ee技术的Web应用倪礼豪(*****************************,浙江**)摘要  J2EE和DotNet框架是实现Web应用的两个极具竞争力的开发平台,J2EE技术在大型应用系统的研发过程中有重要的意义、合理的分层、采用恰当的设计模式可起到解耦合降低系统复杂度的目的。struts、hi

nilihao的专栏 5578

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaEE学习笔记整理

目录 1:明白什么是JavaEE 2:JavaEE的主要技术 (1)JDBC (2)JavaBeans (3)JSP (4)Servlet 3:JavaEE框架 (1)MVC框架 (2)SSM JavaEE学习整理(一) 声明:本文来自菜鸟的学习整理,如有错误欢迎立即指出 1:明白什么是JavaEE 首先是来自百度百科的官方解释:Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。这个版本以前称为 J2EE。能

qq_51861704的博客 8950

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

框架——JavaEE(J2EE)相关

1、什么是JavaEE? Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为 Jakarta EE(这个名称应该还没有得到群众认可)。 狭义的 Java EE 是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件,可以说是一个框架,也可以说是一种规范。 广义的 Java EE 包含各种框架,其中最重要的就是 Spring 全家

weixin_42924812的博客 1107

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

起源之路——JSR?J2EE?JavaEE?

起源之路——JSR?J2EE?JavaEE? 前言 鉴于自己工作了一段时间对各种框架中间件处于知其然不知其所以然的状态中,所以萌生了追寻起源的想法,于是便开始准备编写该系列文章,系统的整理自己对J2EE的理解。若有发现理解不到位,或有不同见解的地方,欢迎各位大神拍砖。 什么是J2EE? J2EE的全称是Java 2 Platform Enterprise Edition,它是由多家公司共同参与并制...

LuoGuoHua_Xin的博客 882

JavaEE(J2EE)学习篇

一、简要介绍 Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2018年3月更名为 Jakarta EE, 是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件,可以说是一个框架或是一种规范。 Java EE是 J2EE的一个新的名...

nann-viiv 的博客 925

JavaEE学习导读

随着技术的发展,⽆论是后端开发还是前端开发,开发的时候都很少使⽤原⽣的代码,⽐如:JDBC、JS等,取⽽代之的是各种开发框架,如:后端框架(Spring、SpringBoot、Mybatis 等)、前端框架( Vue、Node 等)。这些框架都有⼀个共同的特点,就是简单、⾼效,这极⼤的提⾼了我们的开发效率。那什么是框架呢?框架(Framework),意思是框架、机制、准则。最早是源于建筑⾏业,是⼀个框⼦——指其约束性,也是⼀个架⼦——指其⽀撑性,是⼀个基本概念上的结构,⽤于去解决或者处理复杂的问题。

weixin_45698983的博客 871

J2EE

J2EE是什么,主要包括哪些技术 一、J2EE是什么? 从整体上讲,J2EE 是使用 Java 技术开发企业级应用的工业标准,它是 Java 技术不断适应和促进企业级应用过程中的产物。 适用于企业级应用的 J2EE,提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的 开发、管理和部署。J2EE 是一个标准,而不是一个现成的产品。(来自百度) 二、J2EE主要包括哪些技术 servlet Servlet是java平台上的CGI技术。Servlet在服务器端运行,动态地生成

qq_42918433的博客 8209

javaEE和j2EE一样吗?

javaEE和j2EE一样吗?从JDK 5.0开始 J2EE 改名为 java EE,J2SE 改名为 java SE,J2ME 改名成 java ME,其实是一回事,只是叫法改了而已java EE 是java的企业版,主要面向web应用,尤其是企业级开发,都提供了一套开发流程。(这句话个人感觉不好理解.)    1,JavaEE是标准集定义的技术架构    2,企业开发是一个面向企业开发的技术组...

dhtcdh的博客 1万+

javaEE5.0与J2EE1.4比较

<br />在新建web工程时,如果选的是javaEE5自带的jstl,仅能够使用tomcat6.x才能正常使用el <br />如果选的是j2ee1.4或者j2ee1.3时,需要手动添加jstl, <br />默认与tomcat5.x兼容,所以你修改一下web.xml,因为javaEE5.0和j2ee1.4,1.3是不一样的 <br />所以对jstl和el的支持也并不相同! <br />------------------------------------------<br />在新建web工程时,如

gyflyx的专栏 5198

javaee和javaee_JavaEE概念简介

javaee和javaee 这篇文章旨在阐明J2EE范例中使用的首字母缩写词和概念。 J2EE代表Java to Platform,Entreprise Edition。 它使创建模块化Java应用程序得以部署在应用程序服务器上。 它依赖于Java SE,Java SE是一组Java库的核心,所有Java应用程序都在该Java库上实现。 一般概念 在深入探讨J2EE之前,这里提醒您一些一般...

最佳 Java 编程 715

如何学习J2EE

J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向。  首先我们需要知道Java和J2EE是两个不同概念,Java不只是指一种语言,已经代表与微软不同的另外一个巨大阵营,所以Java有时是指一种软件系统的流派,当然目前主要是.NET和Java两大主流体系。  J2EE可以说指Java

Zianed的专栏 2887
上一篇: Java源码
下一篇: Java API文档中文版发布
enet_java
博客等级 码龄21年 20粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值