文档章节

Servlet中的Listener

陈玄礼
 陈玄礼
发布于 2017/09/07 14:43
字数 409
阅读 5
收藏 0

在整个Tomcat服务器中,Listener使用得非常广泛,它是基于观察者模式设计的,Listener的设计为开发Servlet应用程序提供了一种快捷的手段,能够方便地从另一个纵向维度控制程序和数据。目前在Servlet中提供了6种两类事件的观察者接口,它们分别是:EventListener类型的ServletContextAttributeListener、ServletRequestAttributeListener、ServletRequestListener、HttpSessionAttributeListener和LifecycleListener类型的ServletContextListener、HttpSessionListener。

输入图片说明

他们基本涵盖了整个Servlet生命周期中你最感兴趣的每种事件。这些Listener的实现类可以配置在web.xml文件的<listener/>标签中。当然也可以在应用程序中动态添加Listener,需要注意的是ServletContextListener在容器启动之后就不能再添加新的,因为它所监听的事件已经不会再出现了。

如Spring的org.springframework.web.context.ContextLoaderListener就实现了一个ServletContextListener,当容器加载时启动Spring容器。ContextLoaderListener在contextInitialized方法中初始化Spring容器,有几种办法可以加载Spring容器,通过在web.xml的<context-param>标签中配置Spring的applicationContext.xml的路径,文件名可以任意取,如果没有配置,将在/WEB-INF/路径下查找默认的applicationContext.xml文件。ContextLoaderListener的contextInitialized方法代码如下。

public void contextInitialized(ServletContextEvent event){
    this.contextLoader = createContextLoader();
    if(this.contextLoader == null){
        this.contextLoader = this;   
    }
    this.contextLoader.initWebApplicationContext(event.getServletContext());
}

© 著作权归作者所有

共有 人打赏支持
下一篇: Servlet如何工作
陈玄礼
粉丝 4
博文 11
码字总数 10123
作品 0
朝阳
后端工程师
私信 提问
oscache缓存的页面为乱码

项目用的oscache,用的web.xml配置 CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8   forceEncoding   true    CharacterEncodingF......

kkli
2014/03/13
378
1
web工程中web.xml元素加载顺序以及配置实例

web工程中web.xml元素加载顺序以及配置实例 简介 web.xml是web工程的配置文件,容器加载web工程时,会首先从WEB-INF中查询web.xml,并加载其中的配置信息,可以将web.xml认为是web工程的入口...

jhon_n
2017/10/18
0
0
用jwebap监控独立数据源应用

前言 Apusic 应用服务器提供了数据源事件监控功能,通过 Apusic Studio 的辅助,可以非常直观地获得应用中 SQL 执行情况,帮助分析发现问题。 但是,在一些应用中,并未使用到 Apusic 的数据...

鉴客
2011/04/24
1K
0
急求:spring mvc3.1访问url报错:org.springframework.web.servlet.PageNotFound

启动tomcat,访问web应用报如下错误: [org.springframework.web.servlet.PageNotFound] - No mapping found for HTTP request with URI [/v20/activity/test/] in DispatcherServlet with ......

曾鹏
2014/06/03
43.3K
12
web.xml 中的listener、 filter、servlet 加载顺序及其详解

首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet 同时还存...

crazyinsomnia
2011/01/21
0
2

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink TableEnvironment的scan操作

序 本文主要研究一下flink TableEnvironment的scan操作 实例 //Scanning a directly registered tableval tab: Table = tableEnv.scan("tableName")//Scanning a table from a registered......

go4it
30分钟前
2
0
JS检测移动端横竖屏的代码

移动端的设备提供了一个事件:orientationChange事件 这个事件是苹果公司为safari中添加的。以便开发人员能够确定用户何时将设备由横向查看切换为纵向查看模式。 在设备旋转的时候,会触发这...

不负好时光
31分钟前
2
0
ArrayList 优化

优化是 基于数据的大小 当数据量过大 (内存能抗住) 性能达到瓶颈才需要针对性的做优化 contain 优化 可以转换为set add 大批量操作 先预估数据量 调用 `ensureCapacity(int minCapacity)` ...

NotFound403
32分钟前
3
0
Lifecycle Aware Data Loading with Architecture Components

In my previous blog post, I talked about how you can use Loaders to load data in a way that automatically handles configuration changes. With the introduction of Architecture Co......

SuShine
33分钟前
1
0
性能测试汇总

服务器带宽测试 iperf测试带宽 wget -c https://codeload.github.com/esnet/iperf/tar.gz/3.1.6 tar zxvf 3.1.6cd iperf*yum install gcc./configure --prefix=/usr/local/iperf#指定......

以谁为师
37分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部