jsp---->监听器

监听器

Servlet 程序的主要分类?
· 标准 Servlet(JSP) —— MVC
· 过滤 Servlet(过滤器)
· 监听 Servlet(监听器)

一、什么是监听器?
是指针对于整个 WEB 环境的监听,主要有以下三类:
· ServletContext:Servlet 上下文
· Session:对Session 监听
· Request 监听

二、对 ServletContext 监听,上下文监听主要是针对容器的:初始化、销毁、属性操作
在 WEB 端实现监听 = 实现一系列的监听接口
1、ServletContextListener:对整个Servlet 上下文监听(启动、销毁)
public void contextInitialized(ServletContextEvent sce):上下文初始化
public void contextDestroyed(ServletContextEvent sce):上下文销毁
ServletContextEvent 事件:取得一个ServletContext(application)对象
public ServletContext getServletContext()
2、ServletContextAttributeListener:对Servlet 上下文属性的监听
public void attributeAdded(ServletContextAttributeEvent scab):增加属性(setAttribute)
public void attributeRemoved(ServletContextAttributeEvent scab):属性删除(removeAttribute)
public void attributeReplaced(ServletContextAttributeEvent scab):属性替换(第二次设置同一个属性)
ServletContextAttributeEvent 事件:能取得设置属性的名称与内容
public String getName():得到属性名称
public Object getValue():得到属性的值

package cn.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.listener.ServletContextDemo</listener-class>
</listener>
*/

三、监听 session 的创建、销毁、属性操作

Session 属于http 协议下的内容:javax.servlet.http.HttpSessionXxxx
1、HttpSessionListener:对session 的整体状况的监听
public void sessionCreated(HttpSessionEvent se):session创建

public void sessionDestroyed(HttpSessionEvent se):session销毁
HttpSessionEvent 事件:
public HttpSession getSession():取得当前操作的session
2、HttpSessionAttributeListener:对session 的属性监听
public void attributeAdded(HttpSessionBindingEvent se):增加属性
public void attributeRemoved(HttpSessionBindingEvent se):属性删除
public void attributeReplaced(HttpSessionBindingEvent se):属性替换

HttpSessionBindingEvent 事件:
public String getName():取得属性的名称
public Object getValue():取得属性的值
public HttpSession getSession():取得当前的session

package cn.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()) ;
}
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.listener.HttpSessionDemo</listener-class>
</listener>
*/


 


 

 

posted on   小强斋太  阅读(199)  评论(0编辑  收藏  举报

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2012年8月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示