必威体育Betway必威体育官网
当前位置:首页 > IT技术

监听器

时间:2019-06-27 01:40:00来源:IT技术作者:seo实验室小编阅读:58次「手机版」
 

监听器

监听器

一. 监听器接口和注册

监听器接口分类:

  • ServletContext
  • HttpSession
  • ServletRequest

监听器接口主要在javax.servlet和javax.servlet.http的包中。有以下这些接口:

  • javax.servlet.ServletContextListener:它能够响应ServletContext声明周期事件,它提供了ServletContext创建之后和ServletContext关闭之前的会被调用的方法。
  • javax.servlet.ServletContextAttributeListener:响应ServletContext范围内的属性添加、删除、替换事件。
  • javax.servlet.http.HttpSessionListener:响应HttpSession创建、超时和失效时间。
  • javax.servlet.http.HttpSessionAttributeListener:响应HttpSession范围内的属性添加、删除、替换事件
  • javax.servlet.http.HttpSessionActivationListener:一个HttpSession激活或者失效时被调用。
  • javax.servlet.http.HttpSessionBindingListener:可以实现这个接口来保存HttpSession范围的属性。当有属性从HttpSession添加或删除时,HttpSessionBindingListener接口能够做出响应。
  • javax.servlet.ServletRequestListener:响应一个ServletRequest的创建或删除。
  • javax.servlet.ServletRequestAttributeListener:响应ServletRequest范围的属性值添加、删除、修改事件。
  • javax.servlet.AsyncListener:一个用于异步操作的监听器(此章不详细讲解)。

两种注册监听器的方法:

  • 一是使用WebListener注解,例如:
@WebListener
public class ListenerClass implements ListenerInterface{

}
  • 二是在部署描述文档中增加一个listener元素
<listener>
    <listener-class>fully-qualified listener class</listener-class>
</listener>

二. ServletContext监听器

2.1 ServletContextListener

ServletContextListener能对ServletContext的创建和销毁做出响应。当ServletContext初始化时,容器会调用所有注册的ServletContextListener的contextInitialized方法。

void contextInitialized(ServletContextEvent event);

当ServletContext将要销毁时,容器会调用所有注册的ServletContextListener的contextDestroyed方法。

void contextDestroyed(ServletContextEvent event);

contextInitialized方法和contextDestroyed方法中获取ServletContext的方法:

event.getServletContext();

2.2 ServletContextAttributeListener监听器

当一个ServletContext范围的属性被添加、删除或者替换时,ServletContextAttributeListener接口的实现类会接受消息。接口中定义了如下方法:

void attributeAdded(ServletContextAttributeEvent event);

void attributeRemoved(ServletContextAttributeEvent event);

void attributeReplaced(ServletContextAttributeEvent event);

获取属性名称和值

event.getName();

event.getValue();

三. Session监听器

3.1 HttpSessionListener

当一个HttpSesion创建或者销毁时,容器都会通知所有的HttpSessionListener监听器,HttpSessionListener接口方法:

void sessionCreated(HttpSessionEvent event);

void sessionDestroyed(HttpSessionEvent event);

获取HttpSession的方法:

event.getSession();

3.2 HttpSessionAttributeListener

HttpSessionAttributeListener接口中方法:

void attributeAdded(HttpSessionAttributeEvent event);

void attributeRemoved(HttpSessionAttributeEvent event);

void attributeReplaced(HttpSessionAttributeEvent event);

event.getName();

event.getValue();

3.3 HttpSessionActivationListener

在分布式环境下,会用多个容器来进行负载均衡,有可能需要将session保存起来,在容器之间传递。例如当一个容器内存不足时,会把很少用到的对象转存到其他容器上。这时候,容器就会通知所有HttpSessionActivationListener接口的实现类。

HttpSessionActivationListener接口有两个方法:

//当HttpSession被转移到其它容器之后调用
void sessionDidActivate(HttpSessionEvent event);

//当一个HttpSession将要失效时调用
void sessionWillPassivate(HttpSessionEvent event);

3.4 HttpSessionBindingListener

当有属性绑定或者解绑到HttpSession上时,HttpSessionBindingListener监听器会被调用。

四. ServletRequest监听器

4.1 ServletRequestListener

ServletRequestListener会对ServletRequest的创建和销毁事件进行响应。容器会通过一个池来存放并重复利用多个ServletRequest,ServletRequest的创建时从容器池里被分配出来的时刻开始,而它的销毁时刻是放回容器池里的时间。

ServletRequestListener接口有两个方法:

//当一个ServletRequest创建时调用
void requestInitialized(ServletRequestEvent event);

//当ServletRequest销毁时调用
void requestDestroyed(ServletRequestEvent event);

ServletRequestEvent 接口的两个方法;

event.getServletRequest();

event.getServletContext();

4.2 ServletRequestAttributeListener

ServletRequestAttributeListener接口中方法:

void attributeAdded(ServletRequestAttributeEvent event);

void attributeRemoved(ServletRequestAttributeEvent event);

void attributeReplaced(ServletRequestAttributeEvent event);

event.getName();

event.getValue();

五. 小结

主要明白了Servlet API提供的多个监听器类型。这些监听器可以分成三类:application范围、session范围和request范围。监听器的使用很简单,可以通过两种方式注册监听器:在实现类上使用@WebListener注解或者在部署描述文件中增加listener元素。

相关阅读

动作事件监听器——实现ActionListener接口

package swing;import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import ja

分享到:

栏目导航

推荐阅读

热门阅读