静态资源的访问有哪些配置
① 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。
<mvc:resources mapping="/resources/**" location="/public-resources/">
<mvc:cache-control max-age="3600" cache-public="true"/>
</mvc:resources>
结论
“spring.mvc.static-path-pattern”用于阐述HTTP请求地址,而“spring.resources.static-locations”则用于描述静态资源的存放位置。
② javaweb项目如何访问静态资源
1 在spring框架下,如果让mvc拦截所有路径,需要配置静态资源路径:
<mvc:resourceslocation="/image"mapping="image/**"/>
<mvc:resourceslocation="/css"mapping="css/**"/>
现在一般都使用rest风格接口, 即mvc拦截/rest/**请求, 所以只要把静态文件放在其他路径就可以了
2 原生servlet,struct2 直接访问即可
③ Spring Boot自定义静态资源映射
0、基础html页面
注意将不同demo的序号按文件修改即可, demo01.html 内容如下:
1、Spring Boot项目静态资源默认访问路径
2、在IDEA中对应的路径
访问方法: http://localhost:8080/demo01.html ,如下:
3、优先级顺序
Ⅰ classpath:/META-INF/resources
→ Ⅱ classpath:/resources
→ Ⅲ classpath:/static
→ Ⅳ classpath:/public
1、配置文件配置
Ⅰ 此处是覆盖原有配置的,所以默认路径不能漏掉,假设删除原有路径映射,如下:
可以看到此时正常访问的为,demo01和demo05,如下:
注意: 如此配置原有配置仅剩 classpath:/META-INF/resources 还生效。
Ⅱ 静态文件请求匹配方式
修改后访问路径 http://localhost:8080/test/demo05.html ,访问如下:
2、WebMvcConfigurationSupport配置
注意: 此种配置下,原有的静态资源路径被覆盖、失效。
以上即为Spring Boot自定义静态资源映射的全部内容,感谢阅读。
④ springboot静态资源访问问题
1.springboot访问静态资源的几种方式
(1)在src/main/resources/目录下创建
static文件夹
(2)在src/main/resources/目录下创建
resources文件夹
(3)在src/main/resources/目录下创建
public文件夹
(4)在src/main/resources/目录下创建
META-INF/resources文件夹
---------------------
本文来自 吴锦涛1 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_34797335/article/details/80194137?utm_source=
⑤ Spring MVC 直接访问 WEB-INF下的静态页面怎么在配置文件中配置,求大神解答
注意配置的时候如下规则
1、页面jsp(html等)的访问必须走controller的访问和跳转
2、css、js等可以直接通过地址去访问不需要走后台控制器
3、怎么处理的,可以配置访问限制。也就是放开对css、js等静态资源的访问,动态资源(.jsp用控制器去访问),参考连接网页链接