当前位置: 代码迷 >> J2EE >> j2ee器皿对象加载顺序及优先级概述
  详细解决方案

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

热度:45   发布时间:2016-04-17 23:13:03.0
j2ee容器对象加载顺序及优先级概述

一、概述

  • web容器中,主要以三个容器对象的生命周期为导向,分别为:Listener/Filter/Servlet。总体概图如下:
    web容器对象优先加载顺序
    同时,还存在着这样一种配置节点:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,加载顺序如下图:
    context-param

①、加载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 中声明的先后顺序即为加载顺序。
  相关解决方案