`

1、javaweb listener 对象的创建销毁--监听

 
阅读更多
web监听器
    主要有三类:
        1.ServletContext:对servlet上下文(application对象)进行监听
        2.Session:对session监听
        3.Request:对request的监听

    监听器是一个实现特定接口的普通java类,这个程序专门用于监听另一个java对象的方法调用或属性改变,当监听到事件发生后,监听器的某个方法立即执,相关接口[EVENT/LISTENER]

    平时做开发的时候,我们是写监听器去监听其他对象,那么我们如果想设计一个对象,让这个对象可以被别的对象监听又该怎么做呢?
    按照严格的事件处理模型来设计一个对象,这个对象就可以被别的对象监听,事件处理模型涉及到三个组件:事件源、事件对象、事件监听器。

一般程序监听:
public class Person {
      //引用监听
      private PersonListener listener;
      public void eat() {
          if (listener != null) {
              //没有监听怎么办?创建event实例
              listener.doeat(new Event(this));
          }
      }

      public void run() {
          if (listener != null) {
              listener.dorun(new Event(this));
          }
      }
      //注册监听,创建实例
      public void registerListener(PersonListener listener) {
          this.listener = listener;
      }
  }


interface PersonListener {
      void doeat(Event e);
      void dorun(Event e);
  }


class Event {
     private Person source;
     public Event() {     
     }
     public Event(Person source) {
         this.source = source;
     }
     public Person getSource() {
         return source;
     }
     public void setSource(Person source) {
         this.source = source;
     }
 }


如何调用呢??
    public static void main(String[] args) {
         Person p = new Person();
	            //第一步必须先注册监听
         p.registerListener(new PersonListener() {
            //event还没有实例化
             public void doeat(Event e) {
                 Person p = e.getSource();
                 System.out.println(p + "在吃东西");
             }
             public void dorun(Event e) {
                 Person p = e.getSource();
                 System.out.println(p + "在跑步");
             }
         });
         //创建event实例,并绑定事件源
         p.eat();
         p.run();
     }


 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中的属性发生修改的事件。
在web.xml中注册监听:
<listener>  
       <listener-class>listener.MyServletContextListener </listener-class>  
</listener>

<listener>
       <listener-class>listener.MyHttpSessionListener</listener-class>
</listener>
 
<session-config>
      <session-timeout></session-timeout>
</session-config>

<listener>
       <listener-class>listener.MyServletRequestListener</listener-class>
</listener>


一、ServletContext域对象的创建和销毁
    ServletContext对应于一个tomcat应用,实现了ServletContextListener接口的类都可以对ServletContext对象的创建和销毁进行监听。
public class MyServletContextListener implements ServletContextListener {
     @Override
     //当ServletContext对象被创建时,激发contextInitialized (ServletContextEvent sce)方法。
     public void contextInitialized(ServletContextEvent sce) {
         System.out.println("ServletContext对象创建");
     }
     @Override
     //当ServletContext对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。
     public void contextDestroyed(ServletContextEvent sce) {
         System.out.println("ServletContext对象销毁");

    tomcat监听对于定时任务,项目启动关闭、日志记录等

二、监听HttpSession域对象的创建和销毁
    HttpSessionListener 接口用于监听HttpSession对象的创建和销毁
public class MyHttpSessionListener implements HttpSessionListener {
     @Override
     public void sessionCreated(HttpSessionEvent se) {
         System.out.println( se.getSession() + "创建了!!");
     }
 
     @Override
     public void sessionDestroyed(HttpSessionEvent se) {
         System.out.println("session销毁了!!");
     }
 }

    对于session的监听,一般用于用户登陆,用户在线,用户操作权限验证,用户登出的监听,非常有用。

三、监听ServletRequest域对象的创建和销毁
    ServletRequestListener接口用于监听ServletRequest 对象的创建和销毁
 public class MyServletRequestListener implements ServletRequestListener {
     @Override
     public void requestDestroyed(ServletRequestEvent sre) {
         System.out.println(sre.getServletRequest() + "销毁了!!");
         
     }
     @Override
     public void requestInitialized(ServletRequestEvent sre) {
         System.out.println(sre.getServletRequest() + "创建了!!");
     }
 }

     request监听对于用户请求权限,用户是否在线进行验证,在实际开发中非常有用。
     用户每一次访问都会创建request对象,当访问结束后,request对象就会销毁。而MyServletRequestListener 对每个request的创建和销毁都进行了监听。
  • 大小: 4.3 KB
分享到:
评论

相关推荐

    javaWeb学习资料部分---图解版.zip

    5. **监听器(Listener)**: 监听器是观察者模式在JavaWeb中的应用,它们监听特定事件的发生并作出响应。常见的监听器有HttpSessionListener(会话监听)、ServletContextListener(上下文监听)、...

    JavaWeb开发技术-Listener监听器.pptx

    - **HttpSessionListener**:监听HttpSession对象的创建和销毁,适用于跟踪用户会话的生命周期。 - **ServletRequestListener**:监听ServletRequest对象的创建,可以用于获取请求开始和结束的信息。 - **...

    JavaWeb学习资料---PDF格式.zip

    6. **Filter与Listener**:过滤器(Filter)和监听器(Listener)是JavaWeb的重要组件,用于拦截请求、响应,以及监听Web应用的各种事件,如会话创建、销毁等。 7. **Tomcat服务器**:Tomcat是最常用的JavaWeb应用...

    JavaWeb编程打包资源--超值大礼

    监听器(Listener)则监听Web应用中的特定事件,如session创建、销毁,用于实现高级功能,如自动登出、统计在线用户等。 8. **部署与调试**: 了解如何将JavaWeb应用部署到Tomcat、Jetty等Web服务器,以及如何进行...

    JavaWeb中的监听器与过滤器

    在Java Web开发中,监听器主要用来监控应用中某些特定作用域对象的创建、销毁以及对象属性的变化。 ##### 1. ServletContextListener - **作用**: - 初始化工作:在服务器启动时,可以通过监听器完成一些初始化...

    javaweb520-JavaWeb-master.zip

    7. **监听器(Listener)**:监听器是实现特定接口的Java类,用于监听Servlet容器中的特定事件,如session的创建、销毁,以及用户的登录、注销等。 8. **Spring框架**:Spring是JavaWeb开发中最常用的框架之一,它...

    详解JavaWeb中的 Listener

    当特定的事件(如Web应用启动、停止、会话创建、销毁等)发生时,Servlet容器会通过回调Listener中的方法来通知监听器。 **一、基本概念** 观察者模式的核心是订阅和通知。在JavaWeb中,Servlet规范定义了一系列...

    快速学习JavaWeb中监听器(Listener)的使用方法

    - **会话监听器**(SessionListener):用于监听HttpSession对象的创建和销毁。 - **请求监听器**(ServletRequestListener):监听HttpServletRequest对象的初始化和销毁。 - **应用上下文监听器**...

    JavaWeb课后习题1-8章(选择、填空、判断、简答)

    监听器可以监听特定事件,如session创建或销毁、上下文初始化等。学习常见的监听器接口,如HttpSessionListener、ServletRequestListener等,以及它们如何注册和使用。 八、JNDI与DataSource Java Naming and ...

    崔希凡javaweb笔记day18-day23

    监听器(Listener)则用于监听应用中的特定事件,如会话创建、销毁等。day22的笔记可能会涉及`Filter`接口的实现,`web.xml`中的配置,以及各种监听器的使用场景。 6. **MVC模式与Servlet+JSP实践**(day23):...

    【明日科技】实战突击javaweb整合开发1-4章

    Listener监听web应用中的事件,如用户会话(Session)的创建和销毁。 8. **Web容器**:如Tomcat、Jetty等,它们为JavaWeb应用程序提供运行环境。了解如何配置和管理Web容器,以及部署war或ear文件,是开发者必备...

    深入学习JavaWeb中监听器(Listener)的使用方法

    在JavaWeb开发中,监听器(Listener)是JavaServlet API的一部分,用于监控应用程序或Web容器中的特定事件。这些事件可能包括用户会话的创建、销毁、属性更改等。监听器通过实现特定的接口来响应这些事件,从而允许...

    Javaweb--狂神版

    监听器监听特定的事件,如session的创建、销毁,实现特定功能。 7. **Apache Tomcat**:作为JavaWeb应用的服务器,Tomcat广泛用于部署和运行Servlet和JSP应用。 8. **Maven或Gradle**:项目构建工具,如Maven或...

    JavaWeb两大组件FILTER&LISTENER

    1. 实现监听器接口:例如,如果你想监听会话的创建和销毁,可以创建一个类实现HttpSessionListener接口,重写sessionCreated()和sessionDestroyed()方法。 2. 注册监听器:同样地,需要在web.xml中配置监听器。通过...

    JavaWeb视频教程_day22-资料源码

    7. **过滤器(Filter)和监听器(Listener)**:这两种组件是JavaWeb开发中的重要工具,过滤器可以拦截和修改请求或响应,监听器则可以监听特定事件。Day22的内容可能包括它们的配置、编写和使用场景。 8. **部署和...

    JavaWeb 视频教程 传智播客 第28天 共28天

    过滤器用于对请求和响应进行拦截和处理,监听器则可以监听特定的事件,如session的创建、销毁等。 5. **Session和Cookie管理**:在Web应用中,Session和Cookie常用来管理用户状态。课程可能深入讨论了两者的区别和...

    JavaWeb开发实战宝典-servlet篇

    8. **异常处理**:通过`@WebFilter`和`@WebListener`注解,可以创建过滤器和监听器,它们是Servlet应用的重要组件,能够实现全局的日志记录、安全检查等功能。 文件名列表中的"db_database04.sql"可能包含了与...

    javaweb监听session

    前者在Session创建时调用,后者在Session销毁时调用。例如: ```java import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class SessionMonitor implements ...

    崔希凡javaweb笔记day08-day13

    Listener则是用于监听特定事件,如session创建、销毁等,可以实现自动化管理和监控。 6. **Ajax异步通信**:在day13的笔记中,崔老师可能介绍了AJAX(Asynchronous JavaScript and XML),这是一种让网页实现局部...

    JavaWeb6-11号资源

    Listener则监听特定的事件,如会话创建、销毁等,用于实现高级功能。 8. **EJB(Enterprise JavaBeans)**: EJB是JavaEE中的企业级组件,提供了服务器端的业务逻辑封装。EJB有三种类型:Session Beans(处理单个...

Global site tag (gtag.js) - Google Analytics