当前位置: 首页 > news >正文

j2EE监听器-listener

  当Web应用在Web容器中运行时,Web应用内部会不断地发生各种事件:如Web应用被启动、Web应用被停止、用户session开始、用户session结束、用户请求到达等,可以用Servlet API提供的监听器来监听Web应用的内部事件,从而允许当Web内部事件发生时回调事件监听器内的方法。应用程序完全可以采用一个监听器类来监听多种事件,只要让该监听器实现类同时实现多个监听器接口即可。

 
 
常用的Web事件监听器接口:
(1)ServletContextListener:监听Web应用的启动和关闭
包含的方法:
contextInitialized(ServletContextEvent sce):启动Web应用时系统调用Listener的该方法,可通过ServletContextEvent取得该应用的ServletContext实例(sce.getServletContext())
contextDestroyed(ServletContextEvent sce):关闭Web应用时系统调用Listener的该方法
(2)ServletContextAttributeListener:监听ServletContext范围(application)内属性的改变。
包含的方法:
attributeAdded(ServletContextAttributeEvent event):当把一个属性存入application范围时触发该方法,可通过形参event.getName和event.getValue获取添加的属性名和属性值
attributeRemoved(ServletContextAttributeEvent event):当把一个属性从application范围删除时将触发该方法,可通过形参event.getName和event.getValue获取删除的属性名和属性值
attributeReplaced(ServletContextAttributeEvent event):当程序替换application范围内的属性时将触发该方法,可通过形参event.getName和event.getValue获取替换后的属性名和属性值
(3)ServletRequestListener:监听用户请求
包含方法:
requestInitialized(ServletRequestEvent sre): 用户请求到达、被初始化时触发该方法,可通过形参sre.getServletRequest()获取request
requestDestroyed(ServletRequestEvent sre): 用户请求结束、被销毁时触发该方法
(4)ServletRequestAttributeListener:监听ServletRequest范围(request)内属性的改变
(5)HttpSessionListener:监听用户session的开始和结束
包含方法:
sessionCreated(HttpSessionEvent se):用户与服务器的会话开始、创建时触发该方法,通过形参se.getSession()获取session,
sessionDestroyed(HttpSessionEvent se):用户与服务器的会话断开、销毁时触发该方法
(6)HttpSessionAttributeListener:监听HttpSession范围(session)内属性的改变
 
 
配置Listener
只要向Web应用注册Listener实现类即可,无须配置参数之类的东西,若将ServletContextListener配置在容器中,且Web容器(支持Servlet 2.3以上规范)支持Listener,则该ServletContextListener将可以监听Web应用的启动、关闭。
(1)<listener>
    <!--指定Listener的实现类-->
    <listener-class>Listener实现类</listener-class>
</listener>
(2)@WebListener

转载于:https://www.cnblogs.com/allen-blogs/p/5413023.html

相关文章:

  • jQuery EasyUI使用教程之使用虚拟滚动视图显示海量数据
  • DevOps团队结构类型汇总:总有一款适合你
  • CSS学习笔记(五)背景
  • 独家!支付宝小程序技术架构全解析
  • linux关闭ssh连接
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [Redis]Redis的数据类型
  • Leetcode题目:Balanced Binary Tree
  • 我是如何设计 Upload 上传组件的
  • 团队项目第一阶段冲刺站立会议6(4月23日)
  • You must use the Role Management Tool to install or configure Microsoft .NET Framework 3.5 SP1
  • 云HBase Spark分析引擎对接云数据库POLARDB
  • Hive基本操作
  • IDEA之配置svn
  • iPhone6 Plus、iPhone6、iPhone5S和之前版本真实分辨率
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【EOS】Cleos基础
  • 【node学习】协程
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Javascript设计模式学习之Observer(观察者)模式
  • k8s 面向应用开发者的基础命令
  • QQ浏览器x5内核的兼容性问题
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Service Worker
  • SQLServer之创建数据库快照
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 关于Flux,Vuex,Redux的思考
  • 基于axios的vue插件,让http请求更简单
  • 记一次和乔布斯合作最难忘的经历
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 双管齐下,VMware的容器新战略
  • 跳前端坑前,先看看这个!!
  • 优化 Vue 项目编译文件大小
  • 正则表达式小结
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • # .NET Framework中使用命名管道进行进程间通信
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #QT(串口助手-界面)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (3)llvm ir转换过程
  • (libusb) usb口自动刷新
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)ssm码农论坛 毕业设计 231126
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Scala的“=”符号简介
  • ****Linux下Mysql的安装和配置
  • ***原理与防范
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Net 8.0 新的变化
  • .NET Core 成都线下面基会拉开序幕