Servlet监听器listener

原创 2016年05月31日 13:20:03

Servlet监听器listener

监听器的定义

用于在监听对象事件的发生前、发生后等情况时进行操作处理。

监听器类型

在Java Web中,监听的事件源为ServletContext、HttpSession、ServletRequest 3大对象。其中ServletContext和HttpSession对象在应用启动时创建,只有一个实例;ServletRequest,每次有请求过来时创建,请求结束后销毁。
按照监听对象分类:
- ServletContextListener 监听应用启动和关闭
- HttpSessionListener 监听会话产生和销毁
- ServletRequestListener 监听每个请求初始化&结束
按照监听事件分类
- ServletContextAttributeListener
- HttpSessionAttributeListener
- ServletRequestAttributeListener
用于监听对象中属性的增加、删除等事件,当调用相应对象的setAttribute()、removeAttribute()方法设置属性时,监听器可进行捕获。

当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由 ServletContextListener 来处理。

代码示例

创建web工程
在src下添加类

package com.listener;

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

/**
 * Created by chenxin on 16/5/31.
 */
public class TestListener implements ServletContextListener{

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("此处完成一些初始化工作");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("此处完成一些销毁结束工作");
    }
}

在web.xml中注册监听器

 <listener>
        <listener-class>com.listener.TestListener</listener-class>
    </listener>

部署在Tomcat下,启动后再stop,可以看到控制台输出如下:
这里写图片描述
如图,打印出了在启动和关闭事件时的处理内容。

使用Spring时,在web.xml中注册ContextLoaderListener,作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

listener、filter、servlet的加载顺序

顺序依次为:
ServletContext(ContextParam) -> listener -> filter -> servlet
对于servlet,2节点不存在情况下,servlet被请求时才被初始化.
所以, context-param 配置节点并不是一定要写在 listener 配置节前。

当然,对于某一类节点来说,加载顺序与它们在 web.xml 文件中的先后顺序有关。

以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。
servlet 同 filter 类似,此处不再赘述。

所以,同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Servlet学习笔记(九):监听器Listener详解

(一)概述 1、Listener 用于监听 java web程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应的事件。 2、 Listener 对应观察者模...
  • u012228718
  • u012228718
  • 2014年12月10日 13:04
  • 9921

Servlet3.0介绍~使用注解标注监听器(Listener)和过滤器(Filter)

Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器。 package me.gacl.web.listener; import javax.servlet...
  • zhengchao1991
  • zhengchao1991
  • 2016年09月29日 12:46
  • 2582

JavaWeb---Servlet监听器的配置与属性

什么是监听器? Servlet监听器是当今Web应用开发的一个重要组成部分。Servlet监听器主要用来对Web应用进行监听和控制,极大地增强了Web应用的事件处理能力。 一般来说,Servlet...
  • Cyn3465
  • Cyn3465
  • 2014年08月07日 18:48
  • 592

Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别

Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别 0、创建: 加载顺序 监听器-->过滤器-->Servlet. 项目启动后,容器会首先创建声明的各种监听...
  • yansong_8686
  • yansong_8686
  • 2015年12月09日 00:08
  • 1034

Servlet监听器

Servlet监听器: Listener是Servlet的监听器 可以监听客户端的请求,服务端的操作等 通过监听器自动进行一些操作,如在线用户量的统计,当增加一个session时,在线人数就会增加1....
  • Sun_Ru
  • Sun_Ru
  • 2016年11月04日 00:12
  • 789

【Listener】利用监听器Listener以MVC的思想通过JSP+Servlet+JDBC完成在线用户列表的输出

Servlet,监听器Listener与《【Filter】拦截器Filter》(点击打开链接)是JSP的三大核心组件,实际上监听器Listener相当于数据库里面的触发器,一旦用户触发了某种行为,则可...
  • yongh701
  • yongh701
  • 2015年03月03日 16:39
  • 1851

Java中Filter、Listener,拦截器的学习,listener、 filter、servlet 加载顺序及其详解

Filter filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区...
  • lexang1
  • lexang1
  • 2016年08月17日 16:18
  • 2756

Java监听器Listener使用说明

1、什么是Java监听器 监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。   2、Li...
  • meng2602956882
  • meng2602956882
  • 2013年10月29日 17:49
  • 45535

Servlet监听器——实现在线登录人数统计小例子

一、概念 servlet监听器的主要目的是给web应用增加事件处理机制,以便更好的监视和控制web应用的状态变化,从而在后台调用相应处理程序。 二、监听器的类型 1.根据监听对象的类型和范围,分为3...
  • rongxiang111
  • rongxiang111
  • 2016年12月06日 16:37
  • 1746

Java三大器之监听器(Listener)的工作原理和代码演示

现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动 而启动,只初始化一...
  • reggergdsg
  • reggergdsg
  • 2016年10月22日 12:00
  • 21114
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Servlet监听器listener
举报原因:
原因补充:

(最多只允许输入30个字)