web工程启动顺序

原创 2015年07月08日 16:39:00

[toc]
昨天下午接到阿里java研发的电话面试,被问到了这个,说的不大清楚。其实就是自己本身也不是很清晰,所以回来学习整理了一下。
首先,肯定不是按照配置的先后顺序进行加载的。

整体加载顺序

启动一个web工程的时候,web容器会去读它的配置文件web.xml,根据web.xml的配置按顺序加载。也可以简单理解成就是web.xml文件配置内容的加载顺序。

  1. 首先就是读web.xml配置文件;
  2. 紧接着web容器会为这个工程创建一个servlet上下文ServletContext,就是那个被全局共享的域;
  3. 然后当然是要读入通过< context-param >配置的初始化参数,交给servletcontext,以备后面初始化filter和servlet使用;
  4. 容器创建< listener >中的类实例,创建监听器;
  5. 加载filter;
  6. 加载servlet;

想一下也不难想到,先行加载的都会后面加载可能要用到的,比如servletcontext中的初始化参数,再比如给一些或者全部servlet配的filter。

servlet的加载顺序

load-on-startup元素在web启动时决定了servlet加载的顺序。
我们可以把这个值配置成一个整数,一般就0-5。整数值越小,web容器就越先加载这个servlet,按顺序逐个加载。
如果把这个值配成0或正整数,web容器就会在启动时就加载这个servlet,如果没有配置,或者配成负整数,web容器要等到这个servlet第一次被调用时才加载它。
filter一般都是web容器启动时即加载的。

web.xml中常见的配置内容举例

1、web-app中的配置

discription 是对站台的描述
display-name 定义站台的名称
distributable 是指定该站台是否可分布式处理
context-param 用来设定web站台的环境参数,它包含两个子元素:
param-name用来指定参数的名称
param-value 用来设定参数值

2、filter

<filter>
        <filter-name>setCharacterEncoding</filter-name>
        <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>
        </init-param>
</filter>

<filter-mapping>
        <filter-name>setCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>

3、servlet
类型filter的配置

4、首页,欢迎页面

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
</welcom-file-list>

5、用来处理http错误响应码和异常的页面

<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/exception.jsp</location>
</error-page>

在网上看了几篇博文,都是转载的,也没有出处,只能感谢原作者(们)了。

j2ee工程(即动态网站工程Dynamic Web Project),在tomcat容器下运行时(确切说是class文件在运行时),jar包的执行顺序

j2ee工程(即动态网站工程Dynamic Web Project),在tomcat容器下运行时(确切说是class文件在运行时),jar包的执行顺序,也就是编写java文件时,文件头import的c...

Tomcat5的web应用启动顺序详解

  应用Tomcat对于我们来讲实在是司空见惯了,但是对于每个使用者来讲,应该了解其运转的机制也是必不可少的,本人在维护"apache开源项目"论坛时遇到此问题,并略作研究,望与大家共讨、分享。...

java web项目启动加载顺序

web.xml加载过程(步骤):        1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点:       和 2.紧接着,容器创建...

Java web项目listener Filter servlet启动顺序和配置

一、  1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取 和两个结点。  2、紧急着,容创建一个ServletContext(servlet上下文),这个 we...

web.xml启动顺序

web.xml 中的listener、 filter、servlet 加载顺序及其详解1  web.xml 中的listener、 filter、servlet 加载顺序及其详解 一、概述...
  • l_s_d
  • l_s_d
  • 2012年05月18日 10:27
  • 657

java复习一 ——java web项目启动加载顺序

web.xml加载过程(步骤):        1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点:       和 2.紧接着,容器创建...

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

一 1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。  2、紧急着,容创建一个ServletContext(servlet上下文),这个web项...

Tomcat启动时加载数据到缓存[web.xml中listener加载顺序]

最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口,并且在此自定义监听器中需要用到Spring的依赖注入功能...
  • cnctcom
  • cnctcom
  • 2016年10月19日 18:11
  • 1370

web.xml中定义的Spring的XML配置文件启动顺序

在web.xml中定义的Spring的配置文件一般有两个: 1、Spring上下文环境的配置文件:applicationContext.xml contextConfigLo...
  • Trigl
  • Trigl
  • 2016年07月31日 02:20
  • 5191

Tomcat启动时加载数据到缓存--Web.xml里listener的加载顺序,优先初始化Spring IOC容器

最近用到在Tomcat服务器启动时自动加载数据到缓存,这就需要创建一个自定义的缓存监听器并实现ServletContextListener接口,并且在此自定义监听器中需要用到Spring的依赖注入功能...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:web工程启动顺序
举报原因:
原因补充:

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