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>

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

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

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

web.xml启动顺序

web.xml 中的listener、 filter、servlet 加载顺序及其详解 一、概述 1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。  ...
  • hx756262429
  • hx756262429
  • 2012年08月19日 20:09
  • 6654

web项目的启动时文件加载顺序

web项目的启动时文件加载顺序 转自:http://www.cnblogs.com/yw-ah/p/5751509.html 一、 1、启动一个WEB项目,WEB容器会先去读取它的配置文件we...
  • suyu_yuan
  • suyu_yuan
  • 2017年05月27日 14:25
  • 1025

Linux开机启动顺序小结

Linux开机启动十步骤 收藏分享2012-2-6 11:15| 发布者: 红黑魂| 查看数: 1366| 评论数: 0|来自: 比特网 摘要:   开机过程指...
  • bailyzheng
  • bailyzheng
  • 2012年04月21日 20:45
  • 16812

修改VMWare虚拟机的启动顺序

Ubuntu安装在了VMWare 6.0的虚拟你中,因为系统出现问题所以不得不从光盘启动,但是发现修改虚拟机的启动设备是一件技术活,虽然原则上很容易理解:在虚拟机启动时,按F2进入虚拟机的BIOS中设...
  • MagicAlbert
  • MagicAlbert
  • 2011年05月20日 18:07
  • 9227

web.xml执行顺序

web.xml执行顺序 引言:启动java web程序的时候,java web会读取配置文件web.xml;读取和两个结点,随后创建servletContext(servlet上下文),并且web中...
  • u010833154
  • u010833154
  • 2016年02月25日 19:27
  • 3714

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

一 1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取和两个结点。  2、紧急着,容创建一个ServletContext(servlet上下文),这个web项...
  • lanchengxiaoxiao
  • lanchengxiaoxiao
  • 2015年08月04日 22:45
  • 2762

Ubuntu14.04 和 Win7 双系统启动顺序更改

相信不少玩家和我一样比较喜欢双系统,一方面高大上,另一方面可以充分利用自己的本本,工作休闲两不误,但是安装双系统完成又会有很多常见问题来烦我们,例如我们今天讨论的这个问题:启动顺序的问题。 不多扯了,...
  • leavestrong
  • leavestrong
  • 2016年09月01日 06:49
  • 4965

linux开机服务启动顺序详解

Linux系统中,系统服务的启动脚本一般放在/etc/rc.d/init.d目录下。不同的开机模式,则分别对应到/etc/rc.d/rc0-6.d目录下,rc0.d –rd6.d 这七个目录存放着li...
  • zyjiscainiao
  • zyjiscainiao
  • 2017年01月13日 17:00
  • 1878

java web的初始化加载顺序,以及servlet的运行过程

在学习javaweb的时候,很多人都会有种困惑,那就是一个web项目到底是怎么执行的,它的顺序是什么,了解清楚这些对我们学习java会有很大的帮助。 启动web项目后,web容器首先回去找w...
  • douya_bb
  • douya_bb
  • 2016年06月30日 18:39
  • 6443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:web工程启动顺序
举报原因:
原因补充:

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