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

监听器概述

监听器

现实生活中的监听流程:

现实生活中的监听器的定义

监听器是专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监听对象发生变化

时,立即采取相应的行动。

Web监听器

下面是统计用户在线人数的监听流程:

Web监听器

Web监听器在Servlet规范下:

Web监听器是Servlet规范中定义的一种特殊类。

Web监听器用于监听ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件。

Web监听器用于监听域对象的属性发生修改的事件。

Web监听器可以在事件发生前,可以在发生后做出一些必要的处理。

监听器的主要用途

1)统计在线人数和在线用户

2)系统启动时加载初始化信息

3)统计网站访问量

4)跟Spring整合

5)便于自动化管理

6)可以活化钝化人数和日志,便于服务器的关闭和重启。

第一个Web监听器实例讲解

创建Web监听器的步骤

1)创建一个实现监听器接口的类

2)使用注解或者配置web.xml文件

第一个Web监听器实例

FirstListener.java源代码:

package com.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class FirstListener
 *
 */
@WebListener("This is first Listener")
public class FirstListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public FirstListener() {
   
    }
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextInitialized");
   
    }
    
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextDestroyed");
    }

}

运行结果:

我们编一个JSP页面,然后启动Tomcat服务器,访问这个JSP页面就会得到如下结果。

监听器的启动顺序

按照web.xml配置文件中的注册监听器的顺序进行,注解无法达到这种效果。

Web项目中的三大组件Servlet、Filter以及Listener的启动顺序是:

监听器的分类

(1)按照监听的对象划分

1)用于监听应用程序环境对象(ServletContext)的事件监听器

2)用于监听用户会话对象(HttpSession)的事件监听器

3)用于监听请求信息对象(ServletRequest)的事件监听器

(2)按照监听的事件划分

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

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

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

Web八大监听器详解

我们根据第二种分类进行详细的讲解

ServletContextListener实例

MyServletContextListener.java源代码:

package com.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class FirstListener
 *
 */
@WebListener
public class MyServletContextListener implements ServletContextListener {

    /**
     * Default constructor. 
     */
    public MyServletContextListener() {
   
    }
 
	/**
     * @see ServletContextListener#contextInitialized(ServletContextEvent)
     */
    public void contextInitialized(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextInitialized");
   
    }
    
	/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent servletContextEvent)  { 
    	System.out.println("contextDestroyed");
    }

}

运行结果:

HttpSessionListener实例

MyHttpSessionListener.java源代码:

package com.listener;

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

/**
 * Application Lifecycle Listener implementation class MyHttpSessionListener
 *
 */
@WebListener
public class MyHttpSessionListener implements HttpSessionListener {

    /**
     * Default constructor. 
     */
    public MyHttpSessionListener() {
   
    }

	/**
     * @see HttpSessionListener#sessionCreated(HttpSessionEvent)
     */
    public void sessionCreated(HttpSessionEvent httpSessionEvent)  { 
    	System.out.println("sessionCreated");
    }

	/**
     * @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)
     */
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent)  { 
    	System.out.println("sessionDestroyed");
    }

}

运行结果:

ServletRequestListener实例

MyServletRequest.java源代码:

package com.listener;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

/**
 * Application Lifecycle Listener implementation class MyServletRequestListener
 *
 */
@WebListener
public class MyServletRequestListener implements ServletRequestListener {

    /**
     * Default constructor. 
     */
    public MyServletRequestListener() {
   
    }

	/**
     * @see ServletRequestListener#requestDestroyed(ServletRequestEvent)
     */
    public void requestDestroyed(ServletRequestEvent servletRequestEvent)  { 
    	System.out.println("requestDestroyed");
    }

	/**
     * @see ServletRequestListener#requestInitialized(ServletRequestEvent)
     */
    public void requestInitialized(ServletRequestEvent servletRequestEvent)  { 
    	System.out.println("requestInitialized");
    }

}

运行结果:

以上几个监听器使用的JSP页面为:

时间: 2024-08-27 19:14:34

Java Web学习(37):Listener学习(一)的相关文章

java web (j2ee)学习路线 —— 将青春交给命运

RESON TO DO JAVA WEB:1.JAVA WEB(企业级)  2.Android和iOS过于火爆并且不兼容 一.JAVA WEB开发需要的知识储备 1.      基本的网页设计语言:HTML.JavaScript.CSS 2.      制作动态网站:Java.JSP(servelt) 3.      数据库:MySQL.SQL Server.SQL Lite.Access.Oracle 4.      流行的框架:MVC思想和原理——了解Struts.Spring.Hibern

java web用监听器listener简单的实现在线统计人数

今天又重新学习了java web的基础 监听器技术,用sessionListener简单的实现了网页统计在线人数 (有一个bug就是当关闭网页的时候 session不会关闭依旧存在,除非关闭服务器),代码如下(前端网页代码就不显示了): LoginServlet.java: 1 import javax.servlet.ServletException; 2 import javax.servlet.annotation.WebServlet; 3 import javax.servlet.ht

Java Web 之 Servlet - Listener、Filter、Decorator 精辟

Listener-监听器 Listener为在Java Web中进行事件驱动编程提供了一整套事件类和监听器接口.Listener监听的事件源分为ServletContext/HttpSession/ServletRequest三个级别: ServletContext级别 Listener 场景 ServletContextListener 响应ServletContext生命周期事件(创建/销毁),在ServletContext创建/销毁时分别调用其相应的方法. ServletContextAt

Java Web(五) 监听器Listener

监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,request,context等,并触发相应的事件.Listener主要用于对Session,request,context等进行监控,目前共有8种Listener,分别完成对不同事件的监听. 使用Listener不需要关注事件是怎样触发的或者怎么调用相应的Listener,只要记住该类事件触发时一定会调用相

【java web】监听器listener

一.简介 Java的监听器,也是系统级别的监听.监听器随web应用的启动而启动.Java的监听器在c/s模式里面经常用到,它会对特定的事件产生产生一个处理.监听在很多模式下用到,比如说观察者模式,就是一个使用监听器来实现的,在比如统计网站的在线人数. 1.1 监听器分类 1) 按监听的对象划分,可以分为: ServletContext对象监听器 HttpSession对象监听器 ServletRequest对象监听器 2)按监听的事件划分 对象自身的创建和销毁的监听器 对象中属性的创建和消除的监

Java Web学习(3):Win7 64位操作系统搭建Java Web开发环境

一搭建Java Web开发环境的总体概览 工欲善其事必先利其器.学会搭建Java Web开发环境是学习JSP动态网站开发的最基本技能之一.主要介绍在 Windows 7 64位操作系统下搭建Java Web开发环境的过程,主要包括JDK的安装与配置.Tomcat的安装与配置. Eclipse IDE for Java EE Developers的安装与配置. 在这里推荐使用的: 1)Java  JDK 8.0 2)Server   Tomcat 8.0 3)IDE   Eclipse IDE f

Java web开发路线--Java学习资料汇总

Java web开发是什么? 先来说说java体系,包含:javaSE.javaEE.javaME,其实目前关注主要是javaEE,但学些javaEE必须先学习javaSE(因为这个是java基础).Java web开发其实是应用javaEE实现web应用的开发,是用Java技术来解决相关web互联网领域的技术总和. web开发主要包括前端开发和后端开发,前端主要是HTML.CSS.JS等相关技术,后端技术主要有JavaEE技术.数据库技术.文件存储技术等.java体系比较庞大,也是很多人比较迷

Java Web开发中MVC设计模式简介

一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但我们需要编写大型的web工程的话,我们现有的编写模式会造成web应用的可扩展性较差,而且一但出现问题不能准确的定位出问题出在哪里. Java是一门应用设计模式比较广泛的语言.目前主流提出的23种设计模式均可在Java语言编写的程序中所应用.目前

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

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