web.xml的加载过程为:
1.启动一个web项目,读取web.xml文件,读取其中的配置信息
2.创建一个servletContext容器,这个web项目所有部分共享这个上下文
3.容器将<context-param>转换为键值对,交给servletContext容器
4.容器创建<listener>中的监听器实例
5.Servlet 容器启动或终止Web 应用时,ServletContextListener 会监听到,触发ServletContextEvent 事件。
ServletContextListener 接口中定义了ServletContextEvent 事件的两个方法contextInitialized;contextDestroyed
6.调用完contextInitialized方法(servlet启动的监听器的方法)后,容器再对filter初始化
7.容器对web.xml中的指定load-on-startup的值为正数Servlet初始化(优先级1,2,3...->递减),
负数或不指定则在该Servlet调用时初始化(springMVC的初始化为此阶段
web.xml的加载就是:
创建项目读web.xml中的配置信息、生成Context容器、读取<context-param>转换的键值交给Context容器、再创建<listener>中的监听器
、监听器会监听到servlet的创建销毁、并执行他的contextInitialized;contextDestroyed方法、最后容器再对filter初始化。
此时、web.xml根据设置的load-on-startup的值的优先级来初始化Servlet
总结:
ServletContext -> context-param(无顺序)-> listener(无顺序)-> filter(书写顺序) -> servlet(load-on-startup优先级)
Spring配置文件:
配置Spring,必须需要<listener>,而<context-param>可有可无,
如果在web.xml中不写<context-param>配置信息,默认的路径是/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。
如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数,在<param-value></para