`
狂想的旅程
  • 浏览: 16021 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

web.xml被文件加载过程,各节点加载顺序

    博客分类:
  • java
阅读更多
web.xml加载过程(步骤):

1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点:  

<listener></listener> 和 <context-param></context-param>

 

2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.

3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.

4.容器创建<listener></listener>中的类实例,即创建监听.

5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得:

Java代码
ServletContext = ServletContextEvent.getServletContext();  
 
context-param的值 = ServletContext.getInitParameter("context-param的键"); 

ServletContext = ServletContextEvent.getServletContext();

context-param的值 = ServletContext.getInitParameter("context-param的键");

6.得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作  会比所有的Servlet都要早.
换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行.

7.举例.你可能想在项目启动之前就打开数据库.
那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接.

8.这个监听是自己写的一个类,除了初始化方法,它还有销毁方法.用于关闭应用前释放资源.比如说数据库连接的关闭.



web.xml节点加载顺序:


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

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

context-param -> listener -> filter -> servlet

        对于某类配置节而言,与它们出现的顺序是有关的。以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。

       servlet 同 filter 类似,此处不再赘述。

【加载Spring】

       比如filter 需要用到 bean ,但加载顺序是: 先加载filter 后加载spring,则filter中初始化操作中的bean为null;

       所以,如果过滤器中要使用到 bean,可以将spring 的加载 改成 Listener的方式 :

 

Xml代码
<listener>  
        <listener-class>  
            org.springframework.web.context.ContextLoaderListener   
        </listener-class>  
</listener>  

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







    最终结论:

           web.xml 的加载顺序是:[context-param -> listener -> filter -> servlet -> spring] ,而同类型节点之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。


分享到:
评论

相关推荐

    web.xml加载顺序与web.xml常用节点解析

    理解`web.xml`的加载顺序和各个节点的作用对于开发和维护高质量的Web应用至关重要。 1. **加载顺序**: - 当应用服务器启动并加载Web应用程序时,首先读取`web.xml`文件。 - 首先解析的是`&lt;context-param&gt;`节点,...

    web.xml各种配置

    容器启动时会加载并读取web.xml文件,因此理解web.xml的配置项对于Web应用开发至关重要。 ### web.xml的内容 web.xml中可以定义多个配置元素,包括但不限于: - **icon**: 指定IDE和GUI工具用来表示Web应用的图像...

    WEB.XML详解

    web.xml的配置顺序也遵循一定的规则,比如ServletContext总是在其他组件之前被创建,而servlet的加载顺序则根据值的大小和实际出现的顺序进行配置。正确理解web.xml的每个标签及其作用是开发Java EE Web应用的基础。

    Web.xml加载顺序[汇编].pdf

    《Web.xml加载顺序解析》 在Web应用开发中,`web.xml`是部署描述符,它定义了应用程序的行为和配置。了解`web.xml`的加载顺序对于优化和调试Web应用程序至关重要。本文将深入探讨`web.xml`的加载流程,以及各个元素...

    web.xml中&lt;/context-param&gt;等配置的作用

    了解 web.xml 的配置信息和加载顺序对于理解框架的流程至关重要。在 web.xml 中,&lt;context-param&gt; 配置起着非常重要的作用,它在 web 项目启动时发挥着关键的作用。 首先,让我们来了解一下 web 项目的启动过程。在...

    web.xml配置大全[汇编].pdf

    1. 当一个WEB项目启动时,Web容器首先读取web.xml文件,解析其中的和节点。 2. 随后,容器创建一个Servlet上下文(ServletContext),作为整个Web应用程序共享的数据存储区。 3. 被转化为键值对,并存储在...

    web.xml配置大全[定义].pdf

    本文将深入探讨`web.xml`中的`listener`、`filter`、`servlet`的加载顺序以及相关配置元素的详细解释。 首先,`web.xml`在Web应用启动时被读取,它包含`&lt;listener&gt;`、`&lt;context-param&gt;`等节点。`&lt;listener&gt;`定义了...

    DWR.xml配置文件说明书(含源码)

    因为没有办法完全自动进行转换,我们可以应用dwr.xml文件的special signatures syntax配置部分设置类型的转换处理过程. 2.5 DOM Objects DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回...

    web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理

    web.xml文件中的Servlet、Bean、Filter、Listener的加载顺序和执行顺序对应用程序的执行结果产生了重要的影响。只有正确地配置和理解这些组件的加载顺序和执行顺序,才能确保应用程序的正确执行。

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

    本文将深入探讨这个主题,重点关注Web容器如何处理配置文件`web.xml`,以及不同组件(如`context-param`、`listener`、`filter`和`servlet`)的加载顺序。 首先,当一个Web项目启动时,Web容器(如Tomcat、Jetty等...

    XMLDemo2学习研究例子.rar

    在Web开发中,"web.xml"是一个特别重要的文件,它被称为Servlet配置文件,是Java Web应用程序的部署描述符。这个文件定义了应用的配置信息,包括Servlet的映射、过滤器、监听器等。通过`web.xml`,开发者可以指定...

    XML+FLSH加载图片

    这段代码加载XML文件,遍历其中的图片节点,并为每个节点加载图片,加载完成后将图片添加到舞台上。 5. 滚动广告实现: - 图片轮播:可以使用ActionScript创建一个定时器,每隔一定时间更换舞台上的图片,实现...

    Apress.Pro.XML.Development.with.Java.Technology.Sep.2006

    5. **JAXB(Java Architecture for XML Binding)**:JAXB是Java提供的一种对象与XML之间的自动转换框架,简化了XML序列化和反序列化的过程,使得Java对象可以直接转换为XML文档或从XML文档中还原。 6. **JAXP...

    flash+xml.rar_FLASH XML_Flash XML Picture_html轮换图片_toppicxml.xml

    在Web开发中,Flash曾是创建动画和交互性内容的流行工具,而XML(eXtensible Markup Language)则是一种用于存储和传输数据的语言,因其结构清晰、易于解析,常被用来作为Flash内容的数据源。 描述提到的“图片轮换...

Global site tag (gtag.js) - Google Analytics