热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot中静态资源映射详解

本文深入探讨了SpringBoot如何简化Web应用中的静态资源管理,包括默认的静态资源映射规则、WebJars的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。

在现代 Web 应用开发中,静态资源(如 Javascript、CSS 和 HTML 文件)的管理至关重要。Spring Boot 提供了简洁且强大的机制来处理这些资源,极大地简化了开发流程。


1. 概述


Spring Boot 自动配置了许多静态资源映射规则,使得开发者无需手动配置即可轻松访问静态文件。官方文档:Spring Boot 官方文档


Spring Boot 默认提供了三种静态资源映射规则:



  • WebJars 映射

  • 默认静态资源映射

  • 静态首页映射


2. WebJars 映射


Web 应用通常需要引入大量的前端库(如 jQuery、Bootstrap 等)。对于传统的 Java Web 项目,这些库会被放置在 webapp 目录下。然而,在 Spring Boot 项目中,由于其打包为 JAR 文件,不存在 webapp 目录。WebJars 解决了这一问题,它允许以 JAR 包的形式引入前端资源。


WebJars 可以将前端资源打包成 JAR 文件,并发布到 Maven 仓库中进行统一管理。开发者只需在项目的 pom.xml 文件中添加相应的依赖即可使用这些资源。所有 WebJars 资源都存放在类路径下的 /META-INF/resources/webjars/ 目录中。


Spring Boot 通过 WebMvcAutoConfiguration 类自动配置了 WebJars 的映射规则,部分源码如下:


public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
// 其他映射规则
}
}

这意味着所有以 /webjars/** 开头的请求都会被映射到 classpath:/META-INF/resources/webjars/ 目录。


示例:引入 jQuery


1. 在 pom.xml 文件中添加以下依赖:



org.webjars
jquery
3.6.0

2. 启动 Spring Boot 项目后,可以通过浏览器访问 http://localhost:8080/webjars/jquery/3.6.0/jquery.js 来验证 jQuery 是否成功引入。


3. 默认静态资源映射


当访问任意资源时,Spring Boot 会按照以下顺序查找静态资源文件:



  1. classpath:/META-INF/resources/

  2. classpath:/resources/

  3. classpath:/static/

  4. classpath:/public/


优先级从高到低依次为:classpath:/META-INF/resources/ > classpath:/resources/ > classpath:/static/ > classpath:/public/。Spring Boot 会根据请求路径,依次在这些目录中查找静态资源,直到找到匹配的文件。


4. 静态首页映射


静态首页(或欢迎页)通常是一个名为 index.html 的文件,位于静态资源文件夹中。当用户访问根路径(如 //index.html)时,Spring Boot 会自动加载该文件作为首页。查找顺序与默认静态资源相同,即优先查找高优先级的目录。


推荐阅读
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • ASP.NET MVC中Area机制的实现与优化
    本文探讨了在ASP.NET MVC框架中,如何通过Area机制有效地组织和管理大规模应用程序的不同功能模块。通过合理的文件夹结构和命名规则,开发人员可以更高效地管理和扩展项目。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
author-avatar
mobiledu2502932321
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有