靜態資源的訪問有哪些配置
① 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用控制器去訪問),參考連接網頁鏈接