web.xml启动顺序

一、概述

1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。

2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。

3、容器将<context-param>转换为键值对,并交给servletContext。

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

4、容器创建<listener>中的类实例,创建监听器。

1 <listener>
2     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
3   </listener>

加载顺序

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

同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet

首先 classpath是指 WEB-INF文件夹下的classes目录

解释classes含义: 
1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 
2.存放模板文件 eg.actionerror.ftl 
3.存放class文件 对应的是项目开发时的src目录编译文件 
总结:这是一个定位资源的入口

如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法

对于第二个问题 
这个涉及的是lib和classes下文件访问优先级的问题: lib>classes 
对于性能的影响应该不在这个范畴

classpath 和 classpath* 区别: 
classpath:只会到你的class路径中查找找文件; 
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

 1   <context-param>
 2     <param-name>contextConfigLocation</param-name>
 3     <param-value>classpath:context/root-context.xml</param-value>
 4   </context-param>
 5   <servlet>
 6     <servlet-name>springMvc</servlet-name>
 7     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 8     <init-param>
 9       <param-name>contextConfigLocation</param-name>
10       <param-value>classpath*:servlet-context.xml</param-value>
11     </init-param>
12     <load-on-startup>1</load-on-startup>
13   </servlet>
14   <servlet-mapping>
15     <servlet-name>springMvc</servlet-name>
16     <url-pattern>/</url-pattern>
17   </servlet-mapping>
时间: 2024-10-20 23:17:00

web.xml启动顺序的相关文章

web.xml执行顺序总结

总体上的顺序<context-param>--<listener>--<filter>--<servlet>. 其中,每个类别内部都是按序执行的,而<filter-mapping>必须放在相应<filter>之后并且按照<filter-mapping>先后来执行. 另外,<load-on-startup>表示<servlet>的优先级:取0和正整数.其中0优先级最高,这些都会在容器启动的时候初始化(

Tomcat5的web应用启动顺序详解

Tomcat5的web应用启动顺序详解 [收藏此页] [打印] 作者:佚名  2007-07-17 内容导航: 第1页 [IT168技术文档]摘要: 应用Tomcat对于我们来讲实在是司空见惯了,但是对于每个使用者来讲,应该了解其运转的机制也是必不可少的,本人在维护"apache开源项目"论坛时遇到此问题,并略作研究,望与大家共讨.分享. 一.配置自动部署时的web应用加载顺序: 当tomcat的server.xml中对虚拟主机(Host)配置中autoDeploy=true和unpa

tomcat web.xml启动加载类

tomcat web.xml启动加载类 2010-03-30 22:31suitieming | 分类:JAVA相关 | 浏览3870次 我写了一个程序配在tomcat上 想启动tomcat的时候自动运行这个类 怎么配置XML文件类名Test 分享到: 2010-03-31 01:57提问者采纳 答题闯关,过关即送礼!快来参加~ 把你需要启动时自动运行的类做成一个Servlet,然后在web.xml做如下配置:  <servlet>   <servlet-name>StartupL

web.xml启动时调用java类方法

<listener> <listener-class>com.test</listener-class> //该类为java类路径标示要执行的接口 需在web.xm里面配置 </listener> public abstract class SmsListenerAdapter implements ServletContextListener { //集成了监听接口 @Override public abstract void contextInitial

web.xml filter 顺序

The order the container uses in building the chain of filters to be applied for a particular request URI is as follows:1. First, the <url-pattern> matching filter mappings in the same order that these elements appear in the deployment descriptor.2.

web.xml文件解析

web.xml文件过程 参考:web.xml详细配置 WEB.xml 初始化顺序:ServletContext — context-patam(无顺序) — listener(无顺序) — filter(书写顺序) — servlet(load-on-startup优先级) 在启动Web项目时,容器(如Tomcat)会读web.xml文件中的listener节点和comtext-param节点 容器会创建一个ServletContext(Servlet上下文),整个Web项目共享使用该上下文 将

web.xml 中以编码方式添加filter并设置初始化参数AbstractAnnotationConfigDispatchServletInitializer

web.xml中配置filter <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&q

服务器启动时Webapp的web.xml中配置的加载顺序

一 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文. 3.容器将<context-param>转换为键值对,并交给servletContext. 4.容器创建<listener>中的类实例,创建监听器. 二  Load-on-startup Lo

java web项目启动加载顺序

web.xml加载过程(步骤):       1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param> 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文. 3.容器将<context-param></context-param>转