Servlet(三) 监听器

Servlet监听器

所有事件都继承自 java.util.Event

分成三类:application范围、session范围和request范围

  • 监听器接口和注册

    • javax.servlet.ServletContextListener: 响应 ServletContext生命周期事件,Context创建之后,关闭之前会被调用
    • javax.servlet.ServletContextAttributeListener: 响应Context范围的属性 增删替换
    • javax.servlet.http.HttpSessionListener: 响应session创建 超时 失效事件
    • javax.servlet.http.HttpSessionAttributeListener:
    • javax.servlet.http.HttpSessionActivationListener: 响应session失效 激活事件
    • javax.servlet.http.HttpSessionBindingListener: 响应HttpSession中有 添加 删除 值时
    • javax.servlet.ServletRequestListener: 响应ServletRequest的创建or删除
    • javax.servlet.ServletRequestAttributeListener:
    • javax.servlet.AsyncListener: 异步操作监听器
  • Servlet3.0 - 3.1 两种方法实现
    • @WebListener
      public class ListenerClass implements ListenerInterface{}
    • <listener>
          <listener-class>fully-qualified listener class </istener-class>
      </listener>
  • javax.servlet.ServletContextListener
    • public interface ServletContextListener extends EventListener {
          void contextInitialized(ServletContextEvent var1);
      
          void contextDestroyed(ServletContextEvent var1);
      }
      
      //监听器方法入参类型
      public class ServletContextEvent extends EventObject {
          private static final long serialVersionUID = 1L;
      
          public ServletContextEvent(ServletContext source) {
              super(source);
          }
      
          public ServletContext ServletContextEvent() {
              return (ServletContext)super.getSource();
          }
      }
    • 通过入参ServletContextEvent中的ServletContextEvent()可以获取应用上下文获取数据
    • 对ServletContext创建和销毁做出反应
  • javax.servlet.ServletContextAttributeListener
    • public interface ServletContextAttributeListener extends EventListener {
          void attributeAdded(ServletContextAttributeEvent var1);
      
          void attributeRemoved(ServletContextAttributeEvent var1);
      
          void attributeReplaced(ServletContextAttributeEvent var1);
      }
      
      //监听器方法入参类型
      public class ServletContextAttributeEvent extends ServletContextEvent {
          private static final long serialVersionUID = 1L;
          private final String name;
          private final Object value;
      
          public ServletContextAttributeEvent(ServletContext source, String name, Object value) {
              super(source);
              this.name = name;
              this.value = value;
          }
      
          public String getName() {
              return this.name;
          }
      
          public Object getValue() {
              return this.value;
          }
      }
      
  • javax.servlet.http.HttpSessionListener
    • public interface HttpSessionListener extends EventListener {
          void sessionCreated(HttpSessionEvent var1);
      
          void sessionDestroyed(HttpSessionEvent var1);
      }
      
      //监听器方法入参类型
      public class HttpSessionEvent extends EventObject {
          private static final long serialVersionUID = 1L;
      
          public HttpSessionEvent(HttpSession source) {
              super(source);
          }
      
          public HttpSession getSession() {
              return (HttpSession)super.getSource();
          }
      }
  • javax.servlet.http.HttpSessionActivationListener
    • public interface HttpSessionAttributeListener extends EventListener {
          void attributeAdded(HttpSessionBindingEvent var1);
      
          void attributeRemoved(HttpSessionBindingEvent var1);
      
          void attributeReplaced(HttpSessionBindingEvent var1);
      }
      
      //监听器方法入参类型
      public class HttpSessionBindingEvent extends HttpSessionEvent {
          private static final long serialVersionUID = 1L;
          private final String name;
          private final Object value;
      
          public HttpSessionBindingEvent(HttpSession session, String name) {
              super(session);
              this.name = name;
              this.value = null;
          }
      
          public HttpSessionBindingEvent(HttpSession session, String name, Object value) {
              super(session);
              this.name = name;
              this.value = value;
          }
      
          public HttpSession getSession() {
              return super.getSession();
          }
      
          public String getName() {
              return this.name;
          }
      
          public Object getValue() {
              return this.value;
          }
      }
    • HttpSessionBindingEvent extends HttpSessionEvent 所以 在HttpSessionBindingEvent 也能够拿到HttpSession对象
  • javax.servlet.http.HttpSessionActivationListener

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

    • public interface HttpSessionActivationListener extends EventListener {
          //钝化
          void sessionWillPassivate(HttpSessionEvent var1);
          //活化
          void sessionDidActivate(HttpSessionEvent var1);
      }
  • javax.servlet.http.HttpSessionBindingListener
    • public interface HttpSessionBindingListener extends EventListener {
          void valueBound(HttpSessionBindingEvent var1);
      
          void valueUnbound(HttpSessionBindingEvent var1);
      }
  • javax.servlet.ServletRequestListener
    • public interface ServletRequestListener extends EventListener {
          void requestDestroyed(ServletRequestEvent var1);
      
          void requestInitialized(ServletRequestEvent var1);
      }
      
      //监听器方法入参类型
      public class ServletRequestEvent extends EventObject {
          private static final long serialVersionUID = 1L;
          private final transient ServletRequest request;
      
          public ServletRequestEvent(ServletContext sc, ServletRequest request) {
              super(sc);
              this.request = request;
          }
      
          public ServletRequest getServletRequest() {
              return this.request;
          }
      
          public ServletContext getServletContext() {
              return (ServletContext)super.getSource();
          }
      }
  • javax.servlet.ServletRequestAttributeListener
    • public interface ServletRequestAttributeListener extends EventListener {
          void attributeAdded(ServletRequestAttributeEvent var1);
      
          void attributeRemoved(ServletRequestAttributeEvent var1);
      
          void attributeReplaced(ServletRequestAttributeEvent var1);
      }

原文地址:https://www.cnblogs.com/houhou87/p/9949374.html

时间: 2024-07-31 11:49:31

Servlet(三) 监听器的相关文章

第六章 对象作用域与servlet事件监听器

作用域对象 Servlet上下文监听器 Servlet会话监听器 Servlet请求监听器 一:对象作用域 作用域对象 属性操作方法 作用域范围说明 ServletContext(上下文) void setAttribute(String, Object) Object getAttribute(Sting) void removeAttribute(String) Enumeration getAttributeNames() 整个Web应用程序 HttpSession(会话) 一个会话交互过

Servlet事件监听器

过滤器实现javax.servlet.Filter 接口,对某个Servlet程序进行拦截处理,成为Servlet容器与该servlet程序的通信线路上的一道关卡,它可以对Servlet容器发给Servlet程序的请求和Servlet程序回发给Servlet容器的响应进行拦截,可以决定是否将请求继续传递给Servlet程序,以及对请求和响应信息是否进行修改. Servlet事件监听器用于监听Web应用程序中的ServletContext.HttpSession.和ServletRequest等域

Servlet三种实现方式

Servlet三种实现方式:实现Servlet接口,继承GenericServlet ,继承HttpServlet. 1.实现Servlet接口: import javax.servlet.*; import java.io.*; public class Hello implements Servlet{ //执行条件:reload,关闭tomcat,关机 public void destroy() { // TODO Auto-generated method stub System.out

servlet HttpSession 监听器

一.Servlet中对象作用域 1. ServletContext 上下文 应用服务器一启动就产生该对象,服务器关闭即销毁 作用于全局,所有Servlet ,相当于静态变量 2. HttpSession 会话 客户端第一次请求产生,session过期销毁 作用于同一个客户端,相当于成员变量 3. ServletRequest请求 一次请求产生一个对象,请求结束即销毁 作用于同一次请求,相当于局部变量 二.Servlet监听器 工作流程: (1)确定事件源 (2)写一个类,实现Servlet监听器

web开发之Servlet 三

昨天我们学习了Servlet的运行过程和生命周期,那么今天我们学习下Servlet中非常重要的两个类:ServletConfig  ServletContext 我们可以看到,与顶层Servlet主动关联的是ServletConfig  ServletRequest ServletResponse ,它们通过容器传递给Servlet;其中Servlet初始化时候使用ServletConfig,另外两个是请求时调用传给Servlet. 一.ServletConfig 讲解 ServletConfi

Servlet接口应用(开发servlet三种方式)

第一种:实现Servlet接口 public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub } @Override public ServletConfig getServletConfig() { // TODO Auto-generated

javaWeb中servlet开发——监听器

监听的定义 对application的监听 application是servletContext接口的对象,表示的是整个上下文环境,如果要想实现对application监听则可以使用如下两个接口: servletContextListener:是对整个上下文环境的监听 servletContextAttrubiteListener:是对属性的监听. import javax.servlet.* ; public class ServletContextListenerDemo implement

Servlet(三)HttpServlet

以HttpServlet创建Servlet 1.在FirstServlet同目录下建立HServlet.java package com.hunhun; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class HServlet extends HttpServlet{ <span style="white-space:pre"&g

Servlet——Listener监听器

一.监听器配置: 1.基于注解配置:@WebListener://监听器>过滤器>serlvet,配置的时候要注意先后顺序: 2.基于web.xml配置: <listener> <listener-class>全类名</listener-class> </listener> 二.监听域对象/域对象属性:继承对应的接口: 1.ServletContext(application): (1)监听生命周期:ServletContextListener: