`
a25765339
  • 浏览: 60542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】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的方式 :


<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.xml常用节点解析

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

    主要介绍了web.xml中servlet, bean, filter, listenr 加载顺序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd"&gt; 整个配置文件的大体结构如下: &lt;creator id="..." class="..."/&gt; &lt;converter id="..." class="..."/&gt;...

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

    一、1、启动一个WEB项目,WEB容器会先去读取它的配置文件web.xml,读取和两个节点 二、load-on

    ssh(structs,spring,hibernate)框架中的上传下载

     本文后面的章节将从数据持久层->业务层->Web层的开发顺序,逐层讲解文件上传下载的开发过程。  数据持久层  1、领域对象及映射文件  您可以使用Hibernate Middlegen、HIbernate Tools、Hibernate ...

    asp.net专家疑难解答200问源码

    96.如何在TreeView Web控件中动态添加、删除TreeNode节点 100.如何使用TreeView Web控件中的TreeNodeType进行外观控制 101.如何使用TreeView Web控件绑定XML文件-示例1 101.如何使用TreeView Web控件绑定XML文件-...

    JavaScript完全自学宝典 源代码

    Web浏览器:Microsoft Internet Explorer 6.0及以上版本 Web服务器:Tomcat 5.5.20及以上版本 Java运行时环境:Java5.0 JRE及以上版本 2.本书所附光盘范例 第1章(\c01) 示例描述:演示JavaScript的简单应用及...

    asp.net专家疑难解答200问

    如何在TreeView Web控件中动态添加、删除TreeNode节点 100.如何使用TreeView Web控件中的TreeNodeType进行外观控制 101.如何使用TreeView Web控件绑定XML文件-示例1 101.如何使用TreeView Web控件绑定...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    13.6.2 XML Web服务器控件 452 13.6.3 XSLT调试 454 13.7 数据库和XML 454 13.7.1 FOR XML AUTO子句 455 13.7.2 SQL Server Yukon 2005和XML数据类型 459 13.8 小结 459 第14章 站点导航 461 14.1 基于XML的...

    Quartz-Job-Scheduling-Framework-中文版-V0.9.1.zip

    内容提要:Quartz 从属性文件中加载多个插件类时不能保证加载的顺序,所以本节引入一个自定义的统一按顺序加载其他插件的,名之为插件加载器的东西,其实也就是其他插件类的父亲。 第八章. 使用 Quartz 插件 (第五...

    flex3的cookbook书籍完整版dpf(包含目录)

    从Web服务中把XML译码成为强类型对象 第二十章与浏览器通信(628) 20.1节连接到外部URL 20.2节使用FlashVars 20.3节在Flex里面调用JavaScript函数方法 20.4节在JavaScript中调用ActionScript方法函数 20.5节经由...

    ASP.NET2.0高级编程(第4版)1/6

    26.3 使用简单的XML Web服务953 26.3.1 添加Web引用953 26.3.2 在客户应用程序中  调用Web服务955 26.4 Web服务的传输协议957 26.4.1 HTTP-GET959 26.4.2 HTTP-POST961 26.4.3 SOAP962 26.5 WebMethod的重载962 ...

    UANodesetWebViewer:一个 OPC UA 信息模型网络查看器

    您可以加载节点集文件,然后浏览它们。 如果您想查看 OPC UA 配套规范中定义的标准化节点集文件,则非常方便。 用法 它发布在 DockerHub 上: ://hub.docker.com/r/barnstee/uanodesetwebviewer 通过以下方式运行...

    asp.net博客系统

    修改了关于css列表加载顺序的bug,增强对ie6的支持(不过仍有些小问题- -||) 首页结构有小修改,并修正了一些小问题 v1.080516更新记录: 增加相片生成缩略图功能 增加生成静态页功能(目前只针对日志) 增加...

    C#开发经验技巧宝典

    0492 使用XML服务器控件转换XML文档 283 0493 使用MultiView与View控件制作导航页面 286 0494 使用PlaceHolder控件实现动态添加控件 289 0495 如何实现带滚动条的Panel面板 290 0496 使用Substitution控件...

    asp.net知识库

    使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署 ASP.NET 2.0 Security FAQs Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,总体设计思想 Asp...

    jquery插件使用方法大全

    由于目前高校基本尚未开JavaScript的相关课程,目前jQuery的学习,使用,研究都仅限于在职Web程序员之间。 用jq的前提,首先要引用一个有jq的文件 [removed][removed] 这个是jquery官方最新的地址。可用在自己网站...

Global site tag (gtag.js) - Google Analytics