web工程启动顺序

[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>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值