当前位置:首页>开发>正文

spring配置加载maven项目里面的src/main/resoures下的静态资源,配置路径是file: Spring Boot之如何配置静态资源的地址与访

2023-06-15 09:25:39 互联网 未知 开发

 spring配置加载maven项目里面的src/main/resoures下的静态资源,配置路径是file: Spring Boot之如何配置静态资源的地址与访

spring配置加载maven项目里面的src/main/resoures下的静态资源,配置路径是file:

src/main/resoures这个路径下的文件是在classpath下的,比如说这下面有一个
spring.xml ,在web.xml 里注册的话就是类似于

contextConfigLocation classpath*:/spring.xml

Spring Boot之如何配置静态资源的地址与访

静态资源,例如HTML文件、JS文件,设计到的Spring Boot配置有两项,一是“spring.mvc.static-path-pattern”,一是“spring.resources.static-locations”,很多人都难以分辨它们之间的差异,所以经常出现的结果就是404错误,无法找到静态资源。
1. “spring.mvc.static-path-pattern”
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”的作用了。
2. “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错误。
3. 静态资源的Bean配置
从上面可以看出,“spring.mvc.static-path-pattern”与“spring.resources.static-locations”组合起来演绎了nginx的映射配置,如果熟悉Spring MVC,那么理解起来更加简单,它们的作用可以用Bean配置表示,如下:
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/public-resources/")
.setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic())
}
}
或者等同与以下的XML。



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

如何让springmvc对静态资源文件的访问使用文件系统的相对路径


jsp放在 webapp/views/xx.jsp;css放在webapp/static/css/xx.css
jsp引入:
引入css的路径给你删除了个 “..”。绝对路径就可以了。

关于springMVC中静态文件路径问题



  
  
  
  
  
  
  

如何让Spring MVC来处理静态资源

在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL。配置如下:

mvc-dispatcher
org.springframework.web.servlet.DispatcherServlet
1



mvc-dispatcher
/

这表示名字为mvc-dispatcher的servlet会处理一切的url对应的请求,那么我们怎么让servlet来处理项目中的静态资源呢?这里有两种方法。
1. 另外使用一个servlet来处理静态资源。若我们的资源放置在webapps文件夹下的resources文件夹中,那么我们可以用名字为default的servlet来处理静态资源。因此我们还需要在上述配置的基础上加上以下配置:

default
resources/*

这表示default的servlet会处理url中为resources/*的对应的请求。这样,当你把你的image,css已经其他文件放在resources文件中时,spring就可以找到它啦。

2. 采用spring自带方法。首先找到你定义的那个servlet的xml文件,如本例子中,servlet的名字叫mvc-dispatcher,因此需要找到mvc-dispatcher-servlet.xml文件,并在该文件中插入以下配置:


这样,就不必另外添加一个mvc来处理静态资源。而mvc知道静态资源所处的位置为resources文件夹。
两种方法都可以将spring mvc配置处理静态资源

spring mvc 静态资源配置 html中怎么写

让静态资源不被SpringMVC分配器过滤有两种办法: ① 把所有的 JS 和 CSS 文件移至别的文件夹 ② 为 resources 文件夹需要被过滤的文件类型分别写一个 mapping第二种方法是在web.xml配置静态资源映射到default去吧。 第一种方法意思是,比如之前的目录结构是把css,js放在webroot下的resources文件夹中,页面上通过 这样的请求来访问。

Spring Boot中静态资源等应该放在什么位置

web.upload-path=D:/temp/study13/ 
spring.mvc.static-path-pattern=/** 
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,  classpath:/static/,classpath:/public/,file:${web.upload-path}

默认情况是可以放到:resources、static、public,但通过我上面的配置还可以放到:D:/temp/study13/

更多Springboot文章可百度我昵称的中文部份

最新文章