关闭

web工程启动顺序

标签: 配置文件javawebweb-xml
314人阅读 评论(0) 收藏 举报
分类:

[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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5170次
    • 积分:126
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条
    文章分类
    最新评论