java web.xml 中listener、 filter、servlet 加载顺序

原创 2018年04月15日 15:32:23

1、概述

  • 当一个web项目启动时,web容器(比如:tomcat )会首先加载 WEB-INF下的web.xml

  • 至此,容器开始加载context-param(该配置向ServletContext 提供键值对)创建ServletContext(servlet上下文)。

  • 创建listener监听器

  • 创建filter过滤器

  • 创建可创建的servlet,为什么是可创建的,这取决于该servlet中的load-on-startup的值。

2、加载顺序

1
ServletContext -> Context-param -> listener -> filter -> servlet

  

  • ServletContext 和 Context-param 没什么可说的,一个是整个容器的上下文环境,一个是向该环境提供一些参数,

比如:常见的指定spring context文件地址

1
2
3
4
<context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:spring_context.xml</param-value>
 </context-param>

  

再比如:指定log4j.xml文件地址

1
2
3
4
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.xml</param-value>
 </context-param>

  

  • 再说 listener , 如果有2个,甚至多个他们的执行顺序是怎样的?
1
2
3
4
5
6
7
8
<listener>
    <listener-class>com.xx.Listener1</listener-class>
</listener>
 
 
<listener>
    <listener-class>com.xx.Listener2</listener-class>
</listener>

  

谁在前,谁先实例化,比如上面的,Listener1先,Listener2后
  • 再说Filter , 如果有2个,甚至多个他们的执行顺序是怎样的?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<filter>
    <filter-class>com.xx.Filter1</filter-class>
    <filter-name>filter1</filter-name>
</filter>
 
<filter-mapping>
    <filter-name>filter1</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 
 
<filter>
    <filter-class>com.xx.Filter2</filter-class>
    <filter-name>filter2</filter-name>
</filter>
 
 
<filter-mapping>
    <filter-name>filter2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  

filter(不是filter-mapping)谁在前,谁先实例化,比如上面的,filter1先,filter2后
  • 最后再说servlet ,它的启动跟load-on-startup 有空

它是一个正整数值,如果是一个负整数或是这个元素不存在,那么容器会在该 servlet被调用的时候,加载servlet 。如果值是正整数或零,容器在启动时就会加载并初始化这个servlet,值越小的先越先被加载。如果值相等,容器自动选择先加载谁,

 

见鬼网 微信公众平台 : “ 见鬼网”(ID:faceghost) 欢迎关注~



web容器中web.xml中Servlet、Filter、context-param、listener的加载顺序

web容器在启动web项目的时候,会根据项目中的web.xml配置文件进行项目的初始化操作, 通过对web容器的源码分析和项目实践,我们可以大致得出以下加载顺序: 1)、加载,(多个context...
  • u014749862
  • u014749862
  • 2016-04-21 23:22:14
  • 1377

web.xml中listener、 filter、servlet等的加载顺序

web.xml中常用的四种不同类型的配置节点: servlet,htpp请求的处理模块 filter,在servlet执行前、后执行的模块 listener,继承ServletContextLi...
  • u012109105
  • u012109105
  • 2014-12-30 18:28:13
  • 1779

web.xml 中的listener、 filter、servlet 加载顺序及其详解.doc

  • 2014年09月18日 21:22
  • 76KB
  • 下载

web.xml中servlet ,filter ,listener ,interceptor的作用与区别

一、概念:          1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中...
  • netdevgirl
  • netdevgirl
  • 2016-05-23 17:23:33
  • 6512

servlet, spring, filter, listener加载顺序

web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢? 分类: ssh2012-12-04 16:17...
  • xiangbq
  • xiangbq
  • 2015-05-29 10:55:23
  • 2118

小析web.xml中context-param,Listener,Filter,Servlet处理顺序

web.xml中context-param,Listener,Filter,Servlet处理顺序,并对Listener和Filter做简单的说明...
  • Benjieming_Wang
  • Benjieming_Wang
  • 2010-08-15 14:55:00
  • 4116

web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序 研究

web.xml 文件中一般包括 servlet, spring, filter, listenr的配置。那么他们是按照一个什么顺序加载呢?加载顺序会影响对spring bean 的调用。    比如f...
  • wayfoon322
  • wayfoon322
  • 2008-05-08 18:19:00
  • 16709

web.xml中关于Servlet、Filter、Listener的配置 顺序问题

(一)web.xml不同元素的加载顺序 加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。 web.xm...
  • hanghangde
  • hanghangde
  • 2016-05-02 21:08:19
  • 1906

关于web.xml配置文件servlet,filter,listener加载顺序

  • 2013年04月25日 11:01
  • 16KB
  • 下载

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

Filter filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区...
  • lexang1
  • lexang1
  • 2016-08-17 16:18:26
  • 3134
收藏助手
不良信息举报
您举报文章:java web.xml 中listener、 filter、servlet 加载顺序
举报原因:
原因补充:

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