1、 項目創(chuàng)建
我們先創(chuàng)建一個空的項目忆蚀,項目的依賴配置為starter-web依賴衷快,創(chuàng)建好的項目下面有一個resources文件夾截珍,里面有一些空的默認的文件夾,然后有一個配置文件吞瞪。
templates文件下面一般是放置模板頁面的馁启,比如html,jsp之類的,static文件一般是是放置靜態(tài)資源惯疙,比如說翠勉,圖片,文件等等霉颠。
我們放置了文件或者是圖片就需要訪問這個文件对碌,看看怎么才能有效的實現(xiàn)訪問這些靜態(tài)資源文件,以及自己訪問自己定義好的資源訪問路徑蒿偎。
2朽们、資源文件訪問與配置
一般來說,我們是做前后端分離的诉位,Springboot就作為后端骑脱,但是Springboot依然支持有html文件等,實現(xiàn)前后端在一個項目里面苍糠。也就是Springboot web項目叁丧。
首先,我們在templates文件夾下面創(chuàng)建一個名為index的html5頁面岳瞭,然后隨便寫一點東西拥娄,然后在配置文件中,配置一個項目啟動端口瞳筏。
html5文件
配置文件端口配置不再講解稚瘾,前一期里面有配置文件詳解,不會的可以回去看看姚炕。
啟動項目摊欠,瀏覽器輸入:localhost:8088/index.html
你會發(fā)現(xiàn)頁面是404,這時候我們是訪問不了這個頁面的钻心。然后你可能會說localhost:8088/templates/index.html凄硼,你會發(fā)現(xiàn)都不行都不行!
因為Springboot的默認資源配置里面沒有這個templates路徑捷沸,但是有static路徑摊沉。
(1)Springboot中默認的靜態(tài)資源路徑:
1. classpath:/static;
2. classpath:/public痒给;
3. classpath:/resources说墨;
4. classpath:/META-INF/resources
classpath 在項目中就相當于src/main/resources文件夾.
就是說如果你把html文件直接放在static路徑下面是可以直接訪問的,有兩種訪問方式苍柏。
當你添加了start-web的依賴尼斧,resources下面是會默認生成一個static文件夾以及templates文件夾。
(2)自定義靜態(tài)資源路徑试吁。
spring.resources.static-locations=classpath:templates/
我們配置了靜態(tài)資源路徑映射之后棺棵,我們只能訪問這個路徑下面的資源楼咳,也就是相當于自定義了靜態(tài)資源路徑,就是說默認的靜態(tài)資源路徑都會失效烛恤。
(3)兩種訪問靜態(tài)資源的方式
一種是直接通過特定的URL訪問:我們配置好后母怜,啟動項目,瀏覽器輸入:localhost:8088/index.html 就可以正常訪問我們的靜態(tài)資源了缚柏。
效果圖如下:
然后還有一種訪問資源的方法苹熏。是使用代碼是實現(xiàn)的。
我們在和啟動文件同級目錄下面創(chuàng)建一個controller文件夾币喧,然后創(chuàng)建一個Testcontroller,代碼如下:
/**
* @author 全棧學習筆記
* @date 2020/4/12 12:20
* @description
*/
@Controller
public class TestController {
? ? @RequestMapping("/getHtml")
? ? public String getHtml(){
? ? ? ? return "index.html";
? ? }
}
說明:這個@Controller 轨域,意思標記這個類為控制類,或者說他是一個Springmvc controller對象杀餐,標記之后干发,默認這個類的所有方法返回的是一個頁面。然后這個@RequestMapping的注解是一個用來處理請求地址映射的注解怜浅,可用于類或方法上铐然。用于方法之上時蔬崩,你可以通過URL直接訪問這個方法恶座。想要更多SpringBoot的學習資料,或者需要其他方面的Java學習資料的沥阳,可以點擊進入跨琳,暗號:jszz,免費提供桐罕!
到這里脉让,我們就可以利用自定義URL訪問靜態(tài)資源了。在瀏覽器里面輸入:localhost:8088/getHtml 也能正常訪問靜態(tài)資源功炮。圖片也是一樣的溅潜。
3、其他靜態(tài)資源路徑配置方式
(1)繼承WebMvcConfigurerAdapter
我們通過重寫這個類的addResourceHandlers方法薪伏,定義資源路徑
/**
* @author 全棧學習筆記
* @date 2020/4/12 15:46
* @description
*/
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
? ? @Override
? ? public void addResourceHandlers(ResourceHandlerRegistry registry) {
? ? ? ? registry.addResourceHandler("/**").addResourceLocations("/","classpath:templates/");
? ? ? ? super.addResourceHandlers(registry);
? ? }
}
(2)優(yōu)化配置
你會看到之前的那種利用代碼的URL路徑訪問靜態(tài)資源文件的寫法滚澜,我們需要在返回的地方寫上文件的名稱以及文件的后綴名,當我們要返回某一類型的文件時嫁怀,這樣寫就相對比較麻煩设捐,所以我們可以通過以下配置來解決這個問題。
#加前綴
spring.mvc.view.prefix=/
#加后綴
spring.mvc.view.suffix=.html
通過以上的配置塘淑,我們之前的controller里面的方法返回就可以寫成這樣萝招。
@RequestMapping("/getHtml")
? ? public String getHtml(){
? ? ? ? return "index";
? ? }
總結(jié):
靜態(tài)資源配置路徑的兩種常用方式: 一種是默認配置,一種是自定義配置存捺,自定義配置可以是代碼配置槐沼,可以是配置文件里面配置。這兩種配置方式都會使原來默認的配置方式失效。
靜態(tài)資源的訪問方式有兩種:一種是自己用代碼定義路徑岗钩,然后訪問逸爵,一種是直接利用特定的URL方式訪問靜態(tài)資源。
這還有大量的就Java學習資料以及面試資料凹嘲,有需要的可以點擊進入师倔,暗號:jszz,都可以免費領(lǐng)戎懿洹趋艘!