JavaWeb 之web.xml配置中contextConfigLocation属性详解

从零到一:AIGC+Unity3D打造动态天空盒的实战指南 本文详细介绍了如何利用AIGC技术结合Unity3D打造动态天空盒的实战指南。通过AIGC生成360全景图,再集成到Unity3D中,实现高效、多样化的天空盒效果。文章涵盖了从AIGC全景图生成、工作流搭建到Unity场景集成的完整流程,并提供了代码示例和优化建议,帮助开发者快速掌握这一技术。 阅读详情


contextConfigLocation一般配置在context-param标签中,下面首先了解context-param标签作用和Web初始化的简单过程。

context-param标签作用

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-basic.xml</param-value>
</context-param>

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

作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。

  • param-name:设定上下文的参数名称,必须是唯一名称。
  • param-value:设定的参数名称的值。

Web项目初始化过程

  • 启动一个WEB项目的时候,容器(比如:Tomcat)会读web.xml配置文件中的两个节点和。
  • 接着容器会创建一个ServletContext(上下文),整个WEB项目所有部分都将共享这个上下文。
  • 接着容器会将<context-param></context-param>转化为键值对,并交给ServletContext。
  • 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
  • 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter("contextConfigLocation") 来得到context-param设定的值。
  • 得到这个context-param的值之后,你就可以做一些操作了。注意,这个时候你的WEB项目还没有完全启动完成,这个动作会比所有的Servlet都要早。换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行。
  • 举例,你可能想在项目启动之前就打开数据库,那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接。这个监听是自己写的一个类,除了初始化方法,它还有销毁方法。用于关闭应用前释放资源,比如说数据库连接的关闭。

由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

获取context-param定义的属性值

页面中:
${initParam.contextConfigLocation}
Servlet中:
String paramValue = getServletContext().getInitParameter(“contextConfigLocation”);

容器加载过程

  • Root WebApplicationContext:这是对J2EE三层架构中的service层、dao层进行配置,如业务bean,数据源(DataSource)等。在web应用中,其一般通过ContextLoaderListener监听器来加载,通过contextConfigLocation指定配置文件。
  • Servlet WebApplicationContext:这是对J2EE三层架构中的web层进行配置,如控制器(controller)、视图解析器(view resolvers)等相关的bean。通过spring-mvc中提供的DispatchServlet来加载配置,也是通过contextConfigLocation指定配置文件配置文件,默认名称为<servlet-name>-servlet.xml。

1、ContextLoaderListener会被优先加载,初始化时,其会根据context-param元素中contextConfigLocation参数指定的配置文件路径,来创建WebApplicationContext实例。 并调用ServletContext的setAttribute方法,将其设置到ServletContext中,属性的key为org.springframework.web.context.WebApplicationContext.ROOT,最后的ROOT字样表明这是一个 Root WebApplicationContext。

2、DispatcherServlet在初始化时,会根据元素中contextConfigLocation参数指定的配置文件路径,来创建Servlet WebApplicationContext。同时,其会调用ServletContext的getAttribute方法来判断是否存在Root WebApplicationContext。如果存在,则将其设置为自己的parent。这就是父子上下文(父子容器)的概念。
父子容器的作用在于,当我们尝试从child context(即:Servlet WebApplicationContext)中获取一个bean时,如果找不到,则会委派给parent context (即Root WebApplicationContext)来查找。

3、如果我们没有通过ContextLoaderListener来创建Root WebApplicationContext,那么Servlet WebApplicationContext的parent就是null,也就是没有parent context。

Root WebApplicationContext创建过程源码分析

ContextLoaderListener用于创建ROOT WebApplicationContext,其实现了ServletContextListener接口的contextInitialized和contextDestroyed方法,在web应用启动和停止时,web容器(如tomcat)会负责回调这两个方法。而创建Root WebApplicationContext就是在contextInitialized中完成的,相关源码片段如下所示:
在这里插入图片描述
可以看到ContextLoaderListener继承了ContextLoader类,WebApplicationContext的创建是在ContextLoader的initWebApplicationContext方法中完成的,关键代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Servlet WebApplicationContext创建过程源码分析

其实就是SpringMVC初始化过程。
SpringMVC通过web.xml文件中servlet标签下的DispatcherServlet类完成自身的初始化。

每个servlet在初始化时,会先调用servlte的构造函数(为默认构造函数),接着调用init函数,而DispatcherServlet的init方法在其父类HttpServletBean中。

// DispatcherServlet第一次加载时调用init方法
@Override
public final void init() throws ServletException {
    if (logger.isDebugEnabled()) {
        logger.debug("Initializing servlet '" + getServletName() + "'");
    }
    // Set bean properties from init parameters.
    try {
		/*加载web.xml文件中的servlet标签中的init-param,其中含有springMVC的配置文件的名字和路径
		*若没有,则默认为(servlet-name)-servlet.xml,
		*默认路径为WEF—INF下
		*/
        PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
     	//创建BeanWrapper实例,为DispatcherServlet设置属性
        BeanWrapper bw = PropertyAccessorFactory.forBeanPropertyAccess(this);
        ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext());
        bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader, getEnvironment()));
        initBeanWrapper(bw);
     	//把init-param中的参数设置到DispatcherServlet里面去
        bw.setPropertyValues(pvs, true);
    }
    catch (BeansException ex) {
        logger.error("Failed to set bean properties on servlet '" + getServletName() + "'", ex);
        throw ex;
    }

    // Let subclasses do whatever initialization they like.
    //该方法在FrameworkServlet中
    initServletBean();

    if (logger.isDebugEnabled()) {
        logger.debug("Servlet '" + getServletName() + "' configured successfully");
    }
}

FrameworkServlet中的initServletBean方法:
在这里插入图片描述

参考:
https://www.cnblogs.com/yaoyiyao/p/7198076.html
https://www.cnblogs.com/jiaguozhilian/p/5819032.html

数字IC/FPGA 秋招知识点不全面整理 阅读详情

相关推荐

解决银河麒麟V10分辨率问题:xrandr命令详解与常见错误排查

本文详细解析了在银河麒麟V10系统中使用xrandr命令调整屏幕分辨率的方法,包括核心功能解析、常见问题排查及持久化配置技巧。通过实战指南帮助用户解决分辨率缺失、配置失效等典型问题,提升多显示器环境下的工作效率。

weixin_30642561的博客 504

web.xml中contextConfigLocation的作用

在web.xml中通过contextConfigLocation配置spring,contextConfigLocation参数定义了要装入的 Spring 配置文件。   部署applicationContext.xml文件         如果不写任何参数配置,默认的是在/WEB-INF/applicationContext.xml        如果指定了要加载的文件,则会去加载相应的...

elice_的博客 1万+

【正点原子I.MX6U-MINI移植篇】Ubuntu-base根文件系统移植构建过程详解(四)

能不能在ARM板上运行Ubuntu呢?答案肯定是可以的,Ubuntu是Linux系统的一种,可以简单的将Ubuntu理解为一个根文件系统,和我们用busybox、buildroot制作的根文件系统一样。因此移植Ubuntu也就是将Ubuntu根文件系统移植到我们的开发板上。

果果小师弟的博客 3767

web.xml中的contextConfigLocation

这几天在看spring的源码,涉及到spring启动位置的部分,下面就看看spring到底是从哪儿开始加载的。本文使用的是spring3.0M3 首先spring的加载会借助一个监听器ContextLoaderListener,直接上web.xml文件 Xml代码  &lt;listener&gt;      &lt;listener-class&gt;org.springframework.we...

yilaguandemei的博客 1204

嵌入式开发工程师笔试面试指南-Linux驱动

linux驱动

weixin_43491077的博客 473

雨雾天YOLOv8检测拉胯?暗通道去雾+上下文注意力双优化,mAP从58%飙到79%,暴雨也能看清车牌

室外交通监控:高速、省道的雨雾天检测,重点解决小车、货车漏检;车载ADAS系统:雨天行车时的前方车辆、行人识别,需实时性(<40ms);隧道出入口:明暗交界+雾天的复杂场景,暗通道能平衡亮度。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1380

spring----contextConfigLocation

web.xml里的contextConfigLocation参数定义了要装入的 Spring 配置文件。 xml代码类似如下: org.springframework.web.context.ContextLoaderListener contextConfigLocation /WEB

我爱小源的专栏 595

内容审核与文本安全技术综述:检测、过滤与对齐

检测质量高度依赖数据。毒性/仇恨/冒犯语言检测领域形成了一批经典数据集,但它们的标签体系差异很大:例如 OLID(OffensEval)强调“是否冒犯—冒犯类型—目标对象”三层结构;HateXplain 在“hate/offensive/normal”三分类之外,还提供目标群体与人类标注的 rationale span;RealToxicityPrompts 则不做离散标签,而是用毒性分数来研究“模型续写时的毒性退化”。ACL 汇编。

nmdbbzcl的博客 1371

web应用的入口:web.xml核心配置文件详解

前言:如果要了解web项目的底层实现,web.xml配置文件,是必须要掌握的。web.xml配置文件,是web项目的核心,web项目的启动,从这里开始。 为了方便大家理解,我们从最常见的配置开始着手来说明。 一,contextConfigLocation contextConfigLocation用来配置自定义的配置文件的加载路径,如果指定了contextConfigLocati

reggergdsg的博客 8288

【系统分析师】2025年上半年真题:案例分析-答案及详解(回忆版)

摘要: 试题一考查面向对象分析,涉及用例模型构建的四个阶段(识别参与者、合并需求、细化描述、调整模型),分析CRM系统的参与者与用例,并说明用例间的包含、扩展和泛化关系。 试题二探讨嵌入式Docker,包括容器的轻量性、可移植性及隔离性含义,10项措施与7个规范方面的对应关系,以及优化容器切换时间的三种方法(如无状态连接优化)。 试题三聚焦数据库设计,分析订单表的函数依赖与范式分解(BCNF),讨论分解后是否保持函数依赖及无损性,并针对触发器的性能缺陷提出优化方案。 试题四解析Web开发中的MVC架构与SS

数据知道的博客 6605

MobileViT替换YOLOv11主干网络:轻量化新思路-(用MobileViT等轻量视觉Transformer降低计算成本)

在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列算法因其出色的速度-精度平衡成为工业界和学术界的热门选择。随着YOLOv11的推出,模型性能达到了新的高度,但其计算复杂度和参数量也随之增加,这对资源受限的移动设备和嵌入式系统提出了挑战。与此同时,视觉Transformer(ViT)的出现为计算机视觉带来了全新范式,但其庞大的计算需求限制了在移动端的应用。MobileViT作为一种创新的轻量级视觉Transformer架构,巧妙结合了CNN的归纳偏置优势和V

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1647

详解contextConfigLocation

spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题。决定得好好看看这个流程。我们在开发spring的项目当中基本上都会在web.xml通过: [html] view plaincopy context-param>           param-name>contextConfigLocationparam-name>

Happy_wu的专栏 3062

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

java Web项目javaEE中web.xml文件中配置 contextConfigLocation 方法

java Web项目web.xml文件中配置contextConfigLocation方法 一、 web.xml中 classpath: 和 classpath*: 有什么区别? 1、classpath: 只会到你的项目class路径中查找找文件; 2、classpath*: 不仅包含class路径,还包括jar文件中(class路径)进行查找.二、 用模糊匹配的方式配置多配置文件1、...

HaHa_Sir的博客 2275

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

在web.xml中通过contextConfigLocation配置spring

开发Java Web程序,使用ssh架构时,默认情况下,Spring的配置文件applicationContext.xml存放在 项目下的“web-inf/applicationContext.xml”目录下,默认时,Spring会加载这个文件,完成Spring的配置。 如果想改变配置文件的名称,或者想添加多个Spring的配置文件,则可以通过如下方式添加。 在web.xml文件中添加如下内...

Tommy5553的博客 532

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

javaweb中spring出现parsing XML document from class path resource [applicationContext.xml]异常

第一次在javaweb项目中使用spring可能会碰到下面的一个异常: 严重: Context initialization failed org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applica...

星月昭铭的博客 8078

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JavaWeb项目 在web.xml中设置读取application.xml

JavaWeb项目 在web.xml中设置读取application.xml

_修铁路的、的博客 3994

Spring引入多个XML配置文件

在开发JavaWeb项目时,当在项目中使用Spring框架,同时拥有多个Spring配置文件时,如下图: 那么在web.xml配置文件中该如何引入多个Spring配置文件来初始化Spring容器,下面介绍三种方法: 方式一:在web.xml中通过<context-param> 标签引入中使用/*符号。 <!-- 自定义Spring主配置文件的位置 --> &l...

pan_junbiao的博客 3432

【SpringMVC】关于classpath和contextConfigLocation

众所周知,基本上javaee的配置文件都放在WEB-INF之下,javaee网页工程默认读取配置文件也只会在这个目录下面读,但经常看到一些javaee不知道是装逼,还是因为用myeclipse自动生成,还是为了好管理的原因,将工程的配置文件移到其它文件夹,他们基本利用了SpringMVC的contextConfigLocation去完成这件事,contextConfigLocation下面常常也伴

编程记录,亲测有效 1万+

java项目web.xml_javaweb 项目web.xml配置

loginDevelop Example JSP 2.0 Tech Book's Examples /images/1.gif/images/2.gifcontextConfigLocation classpath*:spring-mybatis.xml,classpath*:spring-context-shiro.xml CharacterEncodingFilter org.s...

weixin_33363265的博客 107

二、SpringMVC-.xml的配置

在WEB-INF文件夹下建立templates夹(与Thymleaf模板整合使用),在templates下建立的文件可用Thymleaf解析。这样对于SpringMVC的配置,只需放入SpringMVC.xml里面即可,web.xml可以保存下来。SpringMVC配置文件放到resources下面。

ccb1372098的博客 1854

Java-29 深入浅出 Spring - IoC 基础 启动IoC容器的方式 Java方式与Web(XML、配置)方式

Spring IoC 容器是 Spring 框架的核心,理解 BeanFactory 与 ApplicationContext 的区别是 Java 后端开发者的必修课。本文基于 Spring Framework 5.1.12.RELEASE(2019 年末发布的 5.1.x 稳定线版本,5.1.13.RELEASE 于 2020-01-14 作为最终维护版本发布),系统讲解两者的继承关系、功能差异和典型使用场景。BeanFactory 作为 IoC 容器顶层接口,提供延迟加载的 Bean 管理能力,适合底层

谢谢你的喜欢 我们一起无限进步 1万+

Spring MVC的web.xml配置详解

spring是目前最流行的框架。创建java web项目时,我们首先会遇到的配置文件就是web.xml,这是javaweb为我们封装的逻辑,不在今天的研究中。下面我们将简单讲讲web.xml中的配置。一、一个空的web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns:xsi="http://www.w3.o

Liuqz2009的专栏 2032

javaweb中web.xml文件的servlet配置

  &lt;servlet&gt; &lt;servlet-name&gt;springmvc&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;!-- 默认找 /WEB-INF/[servl...

qq_38497266的博客 829

Web项目中applicationContext.xml放在src下

applicationContext.xml放在src下 在web.xml中加入 contextConfigLocation /WEB-INF/classes/applicationContext.xml

zhubinqiang的专栏 4725

spring的配置文件在web.xml中加载的方式

web.xml加载spring配置文件的方式主要依据该配置文件的名称和存放的位置不同来区别,目前主要有两种方式。1.如果spring配置文件的名称为applicationContext.xml,并且存放在WEB-INF/目录下,那么只需要在web.xml中加入以下代码即可   org.springframework.web.context.ContextLoaderListener 该监听器会自

葫芦娃的博客 667
上一篇: Mysql 之基于SpringBoot实现读写分离
下一篇: Spring 之Spring与SpringMVC父子容器详解
yyangqqian
博客等级 码龄15年 406粉丝 406原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值