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中的过滤器(拦截器)Filter与监听器Listener的作用和区别

Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要...

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

Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别? Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,...

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

(一)概述 1、Listener 用于监听 java web程序中的事件,例如创建、修改、删除Session、request、context等,并触发响应的事件。 2、 Listener 对应观察者模...

Servlet中listener(监听器)和filter的总结

http://ruowu.javaeye.com/blog/661922Servlet中listener(监听器)和filter的总结[转]文章分类:Java编程Listener我是这样理解他的,他是...

Servlet的监听器Listener(流量统计)

监听器: •监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听别一个类的方法调用。 •都是使用观察者设计模式。 •什么是观察者模式: •定义对象间一对多的依赖关系,当一个对象的...

Servlet监听器(Listener)

当web应用在web容器中运行时,Web应用内部会不断的发生各种事件:如Web应用被启动、Web应用停止、 用户请求到达等,通常这些Web事件对开发者来说是透明的。 ServletAPI提供了大量的监...

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

Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要...

Servlet中listener(监听器)和filter的总结

Listener我是这样理解他的,他是一种观察者模式的实现:我们在web.xml中配置listener的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作出相应的反...

Servlet监听器 Listener

1,Listener是Servlet规范的高级特性。Listener应用于监听Java Web程序中的事件,例如创建,修改,删除 Session,request,context等,并用于触发相应的事件...

servlet中监听器listener实现在线登录人数与在线的人员信息显示(ip地址,sessionid,登录时间)

一。.首先创建一个退出时使sessio失效的servlet:package listenerdemo; import java.io.IOException; import javax.servle...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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