美文网首页
配置静态资源的地址与访问路径

配置静态资源的地址与访问路径

作者: 盼旺 | 来源:发表于2019-10-21 13:00 被阅读0次

简介

很久之前用IDEA写springboot的时候,就发现了这个恶心的操作。今天想来解决一下。


上图这样写就可以在IDEA中弹出提示信息,并且ctrl+左键就可以跳到相对位置

ctrl+shift+鼠标可以查看图片内容


但是运行起来就访问不了,显示找不到该资源,原因也差不多知道

原因
在springboot的官方文档中对于默认静态的文件的存放位置有明确的说明。如下:

By default Spring Boot will serve static content from a directory called /static (or /public or /resources or /META-INF/resources) in the classpath or from the root of the ServletContext

翻译后的意思就是说默认情况下,Spring Boot将在类路径中或从ServletContext的根目录中提供名为/ static(或/ public或/ resources或/ META-INF / resources)的目录中的静态内容。也就是说默认情况下,可以将静态文件放到static,public,resources,/ META-INF / resources四个目录下。

那么上面的路劲在springboot看来就是/static/static/img/time.jpg/public/static/img/time.jpg或...也就是前面多加了一个文件夹的名字,我们去掉/static就可以正常访问了

但是去掉的话,我在IDEA中访问就很恶心了,没有提示,且不能跳转

解决方案

spring.resources.static-locations=classpath:/

重新修改springboot提供的默认资源存放路径。

这里设计俩个资源路径问题

spring.mvc.static-path-patternspring.resources.static-locations

  • spring.mvc.static-path-pattern代表的含义是我们应该以什么样的路径来访问静态资源,换句话说,只有静态资源满足什么样的匹配条件,Spring Boot才会处理静态资源请求,以官方配置为例:
#   这表示只有静态资源的访问路径为/resources/**时,才会处理请求
spring.mvc.static-path-pattern=/resources/**,

假定采用默认的配置端口,那么只有请求地址类似于http://localhost:8080/resources/jquery.js时,Spring Boot才会处理此请求,处理方式是将根据模式匹配后的文件名查找本地文件,那么应该在什么地方查找本地文件呢?这就是spring.resources.static-locations的作用了。

  • spring.resources.static-locations用于告诉Spring Boot应该在何处查找静态资源文件,这是一个列表性的配置,查找文件时会依赖于配置的先后顺序依次进行,默认的官方配置如下:
spring.resources.static-locations=(为了好看才分行的)
classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources

http://localhost:8080/resources/jquery.js就会在上述的四个路径中依次查找是否存在“jquery.js”文件,如果找到了,则返回此文件,否则返回404错误。

总结
spring.mvc.static-path-pattern用于阐述HTTP请求地址,而spring.resources.static-locations则用于描述静态资源的存放位置

相关文章

网友评论

      本文标题:配置静态资源的地址与访问路径

      本文链接:https://www.haomeiwen.com/subject/djhtvctx.html