zoukankan      html  css  js  c++  java
  • web.xml启动顺序

    一、概述

    1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。 

    2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。 

    3、容器将<context-param>转换为键值对,并交给servletContext。 

    1  <context-param>
    2     <param-name>contextConfigLocation</param-name>
    3     <param-value>classpath:context/root-context.xml</param-value>
    4   </context-param>

    4、容器创建<listener>中的类实例,创建监听器。

    1 <listener>
    2     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    3   </listener>

     

    加载顺序

    首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:ServletContext -> listener -> filter -> servlet

            同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet

    首先 classpath是指 WEB-INF文件夹下的classes目录 

    解释classes含义: 
    1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 
    2.存放模板文件 eg.actionerror.ftl 
    3.存放class文件 对应的是项目开发时的src目录编译文件 
    总结:这是一个定位资源的入口 

    如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法 

    对于第二个问题 
    这个涉及的是lib和classes下文件访问优先级的问题: lib>classes 
    对于性能的影响应该不在这个范畴 

    classpath 和 classpath* 区别: 
    classpath:只会到你的class路径中查找找文件; 
    classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

     1   <context-param>
     2     <param-name>contextConfigLocation</param-name>
     3     <param-value>classpath:context/root-context.xml</param-value>
     4   </context-param>
     5   <servlet>
     6     <servlet-name>springMvc</servlet-name>
     7     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     8     <init-param>
     9       <param-name>contextConfigLocation</param-name>
    10       <param-value>classpath*:servlet-context.xml</param-value>
    11     </init-param>
    12     <load-on-startup>1</load-on-startup>
    13   </servlet>
    14   <servlet-mapping>
    15     <servlet-name>springMvc</servlet-name>
    16     <url-pattern>/</url-pattern>
    17   </servlet-mapping>
  • 相关阅读:
    Vuex 在state中存取数据 modules分模块 (2018/11/28)
    计数器(2018/11/29)
    03$router和$route的区别 (2018/11/28)
    02导航守卫 (2018/11/28)
    01模拟用户的登录 (2018/11/27)
    路由传参(2018/11/26)
    CSS制作红桃心
    css制作三角形
    css内容超出显示省略号
    css制作旋转风车(transform 篇)
  • 原文地址:https://www.cnblogs.com/loveok-56/p/6433425.html
Copyright © 2011-2022 走看看