java web学习:三大组件 Listener基础

1、概念

事件源:被监听的对象 。监听器主要监听三个域对象 ,分别是 request  session  servletContext

监听器:用来监听某个对象状态变化的组件

响应行为:监听器监听的对象相应的状态发生变化时出发的动作。

2、Listener分类

在java web中,监听器的种类比较多,可以按照事件源(监听的对象)进行分类,也可以按照监听的动作进行分类。这里按照监听的动作进行分类。

(1)监听域对象自身创建和销毁的监听器:

①ServletContextListener接口 监听 SercvletContext对象

②HttpSessionListener接口 监听 HttpSession对象

③ServletRequestListener接口 监听 ServletRequest对象

(2)监听域对象中的属性的增加、修改和删除的事件监听器

⑤HttpSessionAttributeListener接口 监听 HttpSession对象属性

⑥ServletRequestAttributeListener接口 监听 ServletRequest对象属性

(3)监听绑定到 HttpSession 域中某个对象的状态的事件监听器

⑦HttpSessionBindingListener接口 监听 实现了HttpSessionBindingListener接口的对象的session绑定和解除

⑧HttpSessionActivationListener接口 (实现会话的持久化)

3、例子

(1)定义监听器

package com.web.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyListener implements ServletContextListener {

    static {
        System.out.println("MyListener加载了");
    }

    public MyListener() {
      System.out.println("MyListener实例化了");
    }

    public void contextDestroyed(ServletContextEvent sce)  { 

    }

    public void contextInitialized(ServletContextEvent sce)  {
        sce.getServletContext();
        System.out.println("ServletContext创建开始");
    }

}
package com.web.listener;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MySessionListener implements HttpSessionListener {

    static {
        System.out.println("MySessionListener加载了");
    }

    public MySessionListener() {
        System.out.println("MySessionListener实例化了");
    }

    public void sessionCreated(HttpSessionEvent se)  {
    }

    public void sessionDestroyed(HttpSessionEvent se)  {
    }

}
package com.web.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;

public class MyRequestListener implements ServletRequestListener{
    static {
        System.out.println("MyRequestListener加载了");
    }

    public MyRequestListener(){
        System.out.println("MyRequestListener实例化了");
    }

    public  void requestDestroyed (ServletRequestEvent sre) {
    }

    public  void requestInitialized (ServletRequestEvent sre) {}

}

(2)注册监听器

<!-- 注册监听器 -->
<listener>
    <listener-class>com.web.listener.MyRequestListener</listener-class>
</listener>

<listener>
    <listener-class>com.web.listener.MySessionListener</listener-class>
</listener>
<listener>
    <listener-class>com.web.listener.MyListener</listener-class>
</listener>

(3)执行结果

监听器的加载顺序时web.xml中配置的顺序一直

4、生命周期

监听器在容器启动时加载并且实例化,容器关闭时销毁。

5、监听器,过滤器,Servlet三大组件的加载顺序

监听器与过滤器都是在web容器启动时就加载,但是监听器加载的更早。Servlet默认时在第一次访问时加载,通过<load-on-startup>标签可以配置成web容器启动时就加载,但是Servlet加载的时机是三大组件中最晚的。

所以三大组件的加载顺序是:Listener ->Filter->Servlet

原文地址:https://www.cnblogs.com/cplinux/p/12427420.html

时间: 2024-12-12 13:07:44

java web学习:三大组件 Listener基础的相关文章

Java Web学习(37):Listener学习(一)

监听器概述 监听器 现实生活中的监听流程: 现实生活中的监听器的定义 监听器是专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听对象发生变化 时,立即采取相应的行动. Web监听器 下面是统计用户在线人数的监听流程: Web监听器 Web监听器在Servlet规范下: Web监听器是Servlet规范中定义的一种特殊类. Web监听器用于监听ServletContext.HttpSession和ServletRequest等域对象的创建与销毁事件. Web监听器用于监听

Java Web学习(39):Listener学习(三)

Servlet3.0下监听器的使用 使用Servlet 3.0的前提条件 1)使用Servlet 3.0新标准jar包 2)JDK必须是1.6以上版本 3)编译器的编译级别为6.0 4)在web.xml文件中,使用3.0规范 5)使用支持Servlet 3.0特性的Web容器,比如Tomcat7 Servlet3.0下监听器的用法 @WebListener 该注解用于将类声明为监听器,被@WebListener标注的类必须实现以下至少一个接口: ServletContextListener Se

Java Web学习(38):Listener学习(二)

监听器分类 继续接着监听器的分类进行,来看第二种分类中的第二小类. ServletContextAttributeListener实例 MyServletContextAttributeListener.java源代码: package com.listener; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax

Java Web学习(7):JSP基础语法

一个JSP页面可以被分为以下几部份: 1)静态数据,如HTML: 2)JSP指令,如include指令: 3)JSP脚本元素和变量: 4)JSP动作: 5)用户自定义标签: 一静态数据 静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致.此时,该JSP输入文件会是一个没有内嵌 Java或动作的HTML页面.而且,客户端每次请求都会得到相同的响应内容. 这个静态数据的本质就是HTML文档. 二JSP指令 JSP指令控制JSP编译器如何去生成servlet,以下是可用的指令: (1)pag

Java Web学习日志(HTTP基础知识)

1.C/S和B/S C/S是客户端/服务器模式,它是软件系统体系结构,通过它可充分利用两端硬件的优势,将任务合理分配到两端实现,降低开销 B/S是浏览器/服务器模式,在这种模式下,WEB浏览器使用户最主要的应用软件,这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上. 2.HTTP基础知识 HTTP是超文本传输协议的简称,他是Web应用的核心.HTTP协议由两部分程序实现:一个客户端程序和一个服务器程序,它们运行在不同的端系统,通过交换HTTP报文进行会话. 1.2.1.HTTP请求和

java web 学习路线

Java Web学习路线   Java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以Java并不是单机版的,只是面向对象语言.建议如果学习Java体系的话可以这样去学习:   *第一阶段:Java基础,包括Java语法,面向对象特征,常见API,集合框架: *第二阶段:Java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及: *第三阶段:Java API:输入输出,多线程,网络编程,反射注解等,Java的精华部分:

Java Web学习系列——Maven Web项目中集成使用Spring、MyBatis实现对MySQL的数据访问

本篇内容还是建立在上一篇Java Web学习系列——Maven Web项目中集成使用Spring基础之上,对之前的Maven Web项目进行升级改造,实现对MySQL的数据访问. 添加依赖Jar包 这部分内容需要以下Jar包支持 mysql-connector:MySQL数据库连接驱动,架起服务端与数据库沟通的桥梁: MyBatis:一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架: log4j:Apache的开源项目,一个功能强大的日志组件,提供方便的日志记录: 修改后的pom.xm

Java web 学习之旅

java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户管理系统,其实,这对于我这个刚开始接触java web的“新手”来说还是有一点挑战的,所以在最开始制定学习计划的时候,我有意识的把时间拖的比较长,希望我又足够的时间来完成这个项目.而情况却比我想象的要好很多,现在8号我已经完成了,比预期的22号提前了十多天,可能是学习的过程因为有学长的帮助,比较简单

Java Web总结二十一Listener监听器

一.事件三要素 1.事件源:操作事件的对象,例如:窗体Frame 2.事件监听器:事件监听器监听事件源,例如WindowListner,它是一个接口 3.事件,例如:单击事件,通过事件,可以取得事件源 二.适配器模式 1.当一个接口有较多的方法时,而实现类只需对其中少数几个实现,此时可以使用适配器模式 2.适配器模式常用于GUI编程 三.八种Web监听器 1.Web中有三个事件源,分别是ServletContext->HttpSession->ServletRequest 2.ServletC