web.xml文件加载顺序
一、
1
、启动一个
WEB
项目的时候,
WEB
容器会去读取它的配置文件
web.xml
,读取
<listener>
和
<context-param>
两个结点。
2
、紧急着,容创建一个
ServletContext
(
servlet
上下文),这个
web
项目的所有部分都将共享这个上下文。
3
、容器将
<context-param>
转换为键值对,并交给
servletContext
。
4
、容器创建
<listener>
中的类实例,创建监听器。
二、
load-on-startup
元素在
web
应用启动的时候指定了
servlet
被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该
servlet
被调用的时候,加载这个
servlet
。如果值是正整数或零,容器在配置的时候就加载并初始化这个
servlet
,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。 在
servlet
的配置当中,
<load-on-startup>5</load-on-startup>
的含义是: 标记容器是否在启动的时候就加载这个
servlet
。 当值为
0
或者大于
0
时,表示容器在应用启动时就加载这个
servlet
; 当是一个负数时或者没有指定时,则指示容器在该
servlet
被选择时才加载。 正数的值越小,启动该
servlet
的优先级越高。
三、
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。
首先可以肯定的是,加载顺序与它们在
web.xml
文件中的先后顺序无关。即不会因为
filter
写在
listener
的前面而会先加载
filter
。最终得出的结论是:
listener -> filter -> servlet
同时还存在着这样一种配置节:
context-param
,它用于向
ServletContext
提供键值对,即应用程序上下文信息。我们的
listener,
filter
等在初始化时会用到这些上下文中的信息,那么
context-param
配置节是不是应该写在
listener
配置节前呢?实际上
context-param
配置节可写在任意位置,因此真正的加载顺序为:
context-param ->
listener -> filter -> servlet
对于某类配置节而言,与它们出现的顺序是有关的。以
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
类似 ,此处不再赘述。
由此,可以看出,
web.xml
的加载顺序是:
context-param
-> listener -> filter -> servlet
,而同个类型之间的实际程序调用的时候的顺序是根据对应的
mapping
的顺序进行调用的。
分享到:
相关推荐
Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...
《Web.xml加载顺序解析》 在Web应用开发中,`web.xml`是部署描述符,它定义了应用程序的行为和配置。了解`web.xml`的加载顺序对于优化和调试Web应用程序至关重要。本文将深入探讨`web.xml`的加载流程,以及各个元素...
`web.xml`是Java Web应用程序的核心配置文件之一,主要用于定义Web应用程序的结构与行为。它是Servlet容器(如Tomcat)读取Web应用程序配置信息的主要来源,因此深入理解其配置项及其作用至关重要。 #### 二、web....
web.xml的配置顺序也遵循一定的规则,比如ServletContext总是在其他组件之前被创建,而servlet的加载顺序则根据值的大小和实际出现的顺序进行配置。正确理解web.xml的每个标签及其作用是开发Java EE Web应用的基础。
在`web.xml`中配置Listener时,其加载顺序通常发生在所有其他组件之前,因为它们经常用于初始化应用程序环境或配置Spring容器。 **示例代码:** ```xml org.springframework.web.context....
在Tomcat这样的Web容器中,web.xml文件的作用非常基础但又至关重要。容器启动时会加载并读取web.xml文件,因此理解web.xml的配置项对于Web应用开发至关重要。 ### web.xml的内容 web.xml中可以定义多个配置元素,...
本文将深入探讨web.xml文件中的加载顺序和常用元素,帮助开发者更好地理解和使用。 首先,加载顺序是web.xml配置的核心概念。加载顺序遵循以下规则:context-param -> listener -> filter -> servlet。context-...
首先,当Web应用程序启动时,Web容器(如Tomcat、Jetty等)会读取web.xml文件。在这个过程中,它会首先处理`<listener>`和`<context-param>`这两个元素。`<listener>`定义了监听器,这些监听器在Servlet上下文...
`Web.xml`文件是Servlet容器(如Tomcat、Jetty)解析的配置文件,它为Web应用程序提供了元数据,包括Servlet、过滤器、监听器、会话配置、错误页面等。该文件位于`WEB-INF`目录下,是Java Web应用的标准配置部分。 ...
了解 web.xml 的配置信息和加载顺序对于理解框架的流程至关重要。在 web.xml 中,<context-param> 配置起着非常重要的作用,它在 web 项目启动时发挥着关键的作用。 首先,让我们来了解一下 web 项目的启动过程。在...
- XML元素的顺序至关重要,不遵循标准顺序可能导致服务器拒绝执行Web应用。以下是一些关键元素的标准顺序: - `icon`:指定Web应用的图标。 - `display-name`:为Web应用提供显示名称。 - `description`:提供...
`load-on-startup`元素指定Servlet在应用启动时加载的顺序,这里是1,意味着它将在其他未指定顺序的Servlet之前加载。 - `<servlet-mapping>`将`MyServlet`映射到所有以`.do`结尾的URL,这样当用户访问这样的URL时...
`welcome-file-list`元素指定了一个文件列表,当用户访问某个目录但没有指定具体文件时,服务器会按照列表顺序尝试加载其中的文件,通常是`index.html`或`default.jsp`等。 #### 14. Error-Page `error-page`元素...
在web.xml文件中,你可以通过`<listener>`元素定义监听器,当Web应用启动时,Tomcat会实例化这些监听器并调用相应的初始化方法。 ```xml <listener-class>org.springframework.web.context....
web.xml文件中包含了Web服务器如何加载和初始化Web应用的信息,其中包括了Servlet、Filter、Listener等组件的配置信息,以及它们之间的关联和部署规则。 web.xml文件的结构首先需要遵守XML规范,它必须以XML声明...