文档章节

Spring boot 静态资源访问

m
 moon888
发布于 08/19 18:46
字数 642
阅读 16
收藏 0

0. 两个配置

spring.mvc.static-path-pattern

spring.resources.static-locations

1. application中需要先行的两个配置项

1.1 spring.mvc.static-path-pattern

这个配置项是告诉springboot,应该以什么样的方式去寻找资源。默认配置为 /* 。换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求

比如下面这个配置

spring.mvc.static-path-pattern=/soul/*

如果原先访问首页的地址是:http://localhost:8888/index.html
那么在你配置这个配置后,上面的访问就失效了,现在访问同样的页面需要这样访问:http://localhost:8888/soul/index.html

  • 问题1:配置这个配置后原本http://localhost:8888可以直接访问首页,但是现在http://localhost:8888/soul访问不了首页。
    • 后记:多次使用后发现只要配置了这个配置,不管配成什么,http://localhost:8888都访问不了首页。
  • 问题2:配置访问路径为/soul/后原本可以访问resources下其他文件夹的目录下的静态资源,现在不可以了。比如下面截图中test/test.html不能访问了,在没有配置为/soul/可以通过http://localhost:8888/test/test.html访问

1.2 spring.resources.static-locations

这个配置项是告诉springboot去哪找资源。

# 默认值为
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

根据前后关系确定优先级,也就是说如果/META-INF/resources/目录和/resources都有一个index.html,那么根据默认的优先级,会去访问/META-INF/resources/下的资源。

2. 一个配置的实例

首先项目目录是这个样子的:static和tempaltes各有几个页面,其中有一个重名的test页面用来测试优先级

由于现在建立的springboot项目,一般会将js、css等静态文件放在static下,而将页面放在templates下,所以配置上只配置了资源目录,第一个配置使用默认的*/ **,具体如下。

spring.resources.static-locations=classpath:/templates/,classpath:/static/

配置完了启动项目在8888端口,访问http://localhost:8888/,根据上面理论应该会访问到static下的index.html上,结果如图:

访问:http://localhost:8888/test.html,目测会访问到templates下的test.html上,因为配置中templates的优先级高于static,结果如图

同样的,如果有建文件夹的需求在对应目录下建文件夹,并把静态资源放进去即可访问。

 

参考:https://www.jianshu.com/p/a9e6edd46e98

© 著作权归作者所有

m
粉丝 10
博文 97
码字总数 36982
作品 0
程序员
私信 提问
spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法

在spring boot 1.5.x中,resources/static目录下的静态资源可以直接访问,并且访问路径上不用带static,比如静态资源放置位置如下图所示: 那么访问静态资源的路径可以是: http://localhost...

Mr---D
2018/04/13
0
0
spring boot框架学习6-spring boot的web开发(2)

本章节主要内容: 通过前面的学习,我们了解并快速完成了spring boot第一个应用。spring boot企业级框架,那么spring boot怎么读取静态资源?如js文件夹,css文件以及png/jpg图片呢?怎么自定...

中凯_凯哥java
2017/11/06
173
0
Spring Boot 2.0干货系列:(一)Spring Boot1.5X升级到2.0指南

前言 Spring Boot已经发布2.0有4个月多,多了很多新特性,一些坑也慢慢被填上,最近有空,就把本博客中Spring Boot干货系列对应的源码从1.5X升级到Spring Boot 2.0,顺便整理下升级的时候遇到...

嘟爷MD
2018/07/24
0
0
spring-boot-plus V1.2.1 发布,文件上传下载和静态资源访问

Introduction spring-boot-plus 是一套集成 spring boot 常用开发组件的后台快速开发框架 Purpose 每个人都可以独立、快速、高效地开发项目! Everyone can develop projects independently,...

geekidea
08/21
3.3K
7
Spring Boot(09)——使用SpringMVC

使用SpringMVC 使用SpringMVC最简单的方法是在中加入依赖,这样Spring Boot的AutoConfiguration模块将为我们自动进行SpringMVC的配置,创建好、等,详情可以参考和的源码。 这个时候就可以定...

elim168
2018/12/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
28分钟前
6
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
29分钟前
5
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
38分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
今天
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部