iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot 静态资源导入及首页设置问题
  • 293
分享到

SpringBoot 静态资源导入及首页设置问题

2024-04-02 19:04:59 293人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本节了解一下 SpringBoot 中 WEB 开发的静态资源导入和首页设置,对应 springBoot-03-Web 项目。 1. 静态资源导入 在 Web 开发过程中,我们需要接

本节了解一下 SpringBootWEB 开发的静态资源导入和首页设置,对应 springBoot-03-Web 项目

1. 静态资源导入

在 Web 开发过程中,我们需要接触许多的静态资源,如 CSSjs、图片等;在之前的开发过程中,这些资源都放在 Web 的目录下,用到的时候按照对应路径访问即可。不过在 SpringBoot 项目中,没有了 Web 的目录,那这些静态资源该放到哪里去,又要如何访问呢?

由于是 Web 应用中的配置,所以查看对应的自动配置类 WebmvcAutoConfiguration,可以看到处理资源的方法 addResourceHandlers


@Override
public void addResourceHandlers(ResourceHandlerReGIStry registry) {
    if (!this.resourceProperties.isAddMappings()) {
        logger.debug("Default resource handling disabled");
        return;
    }
    addResourceHandler(registry, "/webjars
private String staticPathPattern = "/**";

到这就明白了,其实就是默认的静态资源路径!这个路径也可以通过 spring.mvc 去设置,在未设置的情况在,它就是项目下的所有路径 /**

然后在 Web 属性类 WebProperties 中有一个资源类 Resource,它也设置了4个路径(跳跃的有点大,先看着吧),其中


public static class Resources {

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
                                                                  "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
    ...
}
  1. classpath:/META-INF/resources/ 即上面的 WebJars 路径
  2. classpath:/resources/resources/resources/ 路径
  3. classpath:/static/resources/static/路径
  4. classpath:/public/resources/public 路径

即所有通过 /**(未配置情况下)的访问请求,都会在这四个路径中寻找静态资源!

默认的 resource 中只有 static 一个目录,这里把上面的目录都创建一下,且放入一个测试用的 js 文件

此时运行项目,访问 Http://localhost:8080/public.jshttp://localhost:8080/resources.jshttp://localhost:8080/static.js,都可以显示出对应的 js 文件内容!

注意:如果三个目录下的文件有重名的情况,则优先级为 CLASSPATH_RESOURCE_LOCATIONS 数组的顺序,可以理解为如果在前面的路径中找到了就不找后面的了!

2. 首页设置

和上面一样,先找到对应的源码


@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
                                                           FORMattinGConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
    WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
        new TemplateAvailabilityProviders(applicationContext), applicationContext, getWelcomePage(),
        this.mvcProperties.getStaticPathPattern());
    welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
    welcomePageHandlerMapping.setCorsConfigurations(getCorsConfigurations());
    return welcomePageHandlerMapping;
}

很长也很复杂,不过只需要关注里面的 getWelcomePage() 方法,点进去看看


private Resource getWelcomePage() {
    for (String location : this.resourceProperties.getStaticLocations()) {
        Resource indexhtml = getIndexHtml(location);
        if (indexHtml != null) {
            return indexHtml;
        }
    }
    ServletContext servletContext = getServletContext();
    if (servletContext != null) {
        return getIndexHtml(new ServletContextResource(servletContext, SERVLET_LOCATION));
    }
    return null;
}

private Resource getIndexHtml(String location) {
    return getIndexHtml(this.resourceLoader.getResource(location));
}

private Resource getIndexHtml(Resource location) {
    try {
        Resource resource = location.createRelative("index.html");
        if (resource.exists() && (resource.getURL() != null)) {
            return resource;
        }
    }
    catch (Exception ex) {
    }
    return null;
}

这三个方法是逐层调用的关系(虽然我也不知道为什么要这么干),不过可以知道,其中的 location 就是上面的三个目录 resourcesstaticpublic,默认的首页是 index.html。也就是说,如果这三个目录下存在 index.html 文件,那么它就是默认的首页!演示就省略了,反正也不是什么难点!

3. 总结

本节主要是从源码的角度,研究了一下静态资源导入和首页设置的问题。其实学习结论很简单,但从源码出发思考问题的思想,是不容易学习的。

到此这篇关于SpringBoot 静态资源导入及首页设置的文章就介绍到这了,更多相关SpringBoot 静态资源导入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot 静态资源导入及首页设置问题

本文链接: https://www.lsjlt.com/news/136603.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot 静态资源导入及首页设置问题
    本节了解一下 SpringBoot 中 Web 开发的静态资源导入和首页设置,对应 SpringBoot-03-Web 项目。 1. 静态资源导入 在 Web 开发过程中,我们需要接...
    99+
    2024-04-02
  • SpringBoot静态资源与首页配置实现原理深入分析
    目录一、静态资源导入1、webjars2、静态资源映射规则3、自定义静态资源路径二、首页配置和图标1、首页配置2、图标一、静态资源导入 关键源码可以看WebMvcAutoConfig...
    99+
    2024-04-02
  • SpringBoot之导入静态资源详解
    目录一、分析源码二、webjars方式三、导入静态资源四、自定义静态资源路径(不推荐)一、分析源码 我们学完之前的框架,大概知道静态资源过滤是由mvc处理的,然后在分析自动装配的时候...
    99+
    2024-04-02
  • SpringBoot中的yaml语法及静态资源访问问题
    目录配置文件-yaml基本语法:数据类型:Web开发之简单功能分析静态资源的访问问题改变默认的静态资源的路径:配置文件-yaml 在spring Boot开发中推荐使用yaml来作为...
    99+
    2024-04-02
  • SpringBoot访问静态资源的配置及顺序说明
    目录访问静态资源的配置及顺序1. SpringBoot的默认配置2. 测试3.配置静态资源的配置心得举例访问静态资源的配置及顺序 今天在玩SpringBoot的demo的时候,放了张...
    99+
    2024-04-02
  • SpringBoot详细讲解静态资源导入的实现
    目录SpringBootWeb开发1. 静态资源导入webjars使用自己的静态资源总结2.制作特殊的首页图标转变Thymeleaf模板引擎引入Thymeleaf取值有无转义循环Sp...
    99+
    2024-04-02
  • springboot访问静态资源会遇到什么问题
    这篇文章主要介绍了springboot访问静态资源会遇到什么问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。访问静态资源遇到的坑及解决开始是以这种结构进行的,结果页面上一篇...
    99+
    2023-06-29
  • 关于SpringBoot静态资源路径管理问题
    目录一、默认静态资源路径二、增加静态资源路径前缀一、默认静态资源路径 类路径下: staticpublicresources 这几个目录为默认静态资源访问的目录 二、增加静态资源...
    99+
    2024-04-02
  • springboot访问静态资源遇到的坑及解决
    目录访问静态资源遇到的坑及解决直接访问静态资源的问题SpringBoot 默认静态资源访问配置引入shiro 或 security后的拦截过滤访问静态资源遇到的坑及解决 开始是以这...
    99+
    2024-04-02
  • 基于SpringBoot启动类静态资源路径问题
    目录SpringBoot启动类静态资源路径SpringBoot核心配置类分别是一下四个静态资源路径静态文件存放位置设置默认配置自定义位置SpringBoot启动类静态资源路径 Spr...
    99+
    2024-04-02
  • SpringBoot静态资源路径管理问题怎么解决
    这篇文章主要介绍“SpringBoot静态资源路径管理问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot静态资源路径管理问题怎么解决”文章能帮助大家解决问题。一、默认静态...
    99+
    2023-06-30
  • SpringBoot怎么设置静态资源访问控制和封装集成
    这篇文章主要讲解了“SpringBoot怎么设置静态资源访问控制和封装集成”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot怎么设置静态资源访问控制和封装集成”吧!背景最近在...
    99+
    2023-06-20
  • SpringBoot设置静态资源访问控制和封装集成方案
    背景 最近在着手公司框架优化及项目实际应用,原先方案是springboot+html前后端分离单独部署,后端人员兼职前端开发,后续产品线业务进行优化,面向企业使用部分由移动网站人员负...
    99+
    2024-04-02
  • SpringBoot如何访问html和js等静态资源配置
    目录SpringBoot访问html和js等静态资源配置1:访问html2:访问jsSpringBoot访问不到js,css等静态资源问题SpringBoot访问html和js等静态...
    99+
    2024-04-02
  • SpringBoot深入探究四种静态资源访问的方式
    目录1.默认的静态资源目录2.resources静态资源目录图片存放3. 静态资源访问3.1.通过路径访问静态资源3.2.通过配置类配置路径访问本地静态资源1.config2.访问结...
    99+
    2024-04-02
  • 聊聊SpringMVC项目依赖和静态资源导出问题
    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。...
    99+
    2024-04-02
  • SpringBoot security默认拦截静态资源问题怎么解决
    这篇文章主要讲解了“SpringBoot security默认拦截静态资源问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot security...
    99+
    2023-07-05
  • Android启动页设置及动态权限跳转问题解决
    目录启动页的作用启动页跳转动态权限获取完整启动页控制程序启动页的作用 在我遇到这个实际问题之前,我一直认为启动页的作用是美化产品,提升软件逼格。但实际上,它更重要的是起到了一个拦截器...
    99+
    2024-04-02
  • 如何解决vue项目动态设置页面title及是否缓存页面的问题
    小编给大家分享一下如何解决vue项目动态设置页面title及是否缓存页面的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!跟传...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作