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>
*/


 


 

原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429514.html