您的位置:首页 > 其它

j2ee容器对象加载顺序及优先级概述

2015-05-06 11:28 169 查看
一、概述

web容器中,主要以三个容器对象的生命周期为导向,分别为:Listener/Filter/Servlet。总体概图如下:



同时,还存在着这样一种配置节点:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,加载顺序如下图:



①、加载Servlet时,分两种情况:启动时加载、懒加载。

启动时加载

只需在配置Servlet的时候加上节点
<load-on-startup>1</load-on-startup>
,其中,值越小,优先级越高。(特别注意:最小值为0,负值时认为是懒加载)

懒加载

即容器完成启动,响应对应第一次请求时对指定的Servlet进行初始化。对应启动加载情况,如果没有配置节点信息(load-on-startup)或者改节点信息为负值时对应懒加载。

②、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() 方法的。

③、Listener

web.xml 中声明的先后顺序即为加载顺序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息