亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring Boot實戰之靜態資源處理

2024-07-13 10:17:09
字體:
來源:轉載
供稿:網友

前兩章我們分享了Spring boot對Restful 的支持,不過Restful的接口通常僅僅返回數據。而做web開發的時候,我們往往會有很多靜態資源,如html、圖片、css等。那如何向前端返回靜態資源呢?以前做過web開發的同學應該知道,我們以前創建的web工程下面會有一個webapp的目錄,我們只要把靜態資源放在該目錄下就可以直接訪問。但是,基于Spring boot的工程并沒有這個目錄,那我們應該怎么處理?

一、最笨的方式

我們首先來分享一種最笨的辦法,就是將靜態資源通過流直接返回給前端,我們在maven工程的resources的根目錄下建立一個html的目錄,然后我們把html文件放在該目錄下,并且規定任何訪問路徑以/static/開頭的即訪問該目錄下的靜態資源,其實現如下:

@Controllerpublic class StaticResourceController {  @RequestMapping("/static/**")  public void getHtml(HttpServletRequest request, HttpServletResponse response) {    String uri = request.getRequestURI();    String[] arr = uri.split("static/");    String resourceName = "index.html";    if (arr.length > 1) {      resourceName = arr[1];    }    String url = StaticResourceController.class.getResource("/").getPath() + "html/" + resourceName;    try {      FileReader reader = new FileReader(new File(url));      BufferedReader br = new BufferedReader(reader);      StringBuilder sb = new StringBuilder();      String line = br.readLine();      while (line != null) {        sb.append(line);        line = br.readLine();      }      response.getOutputStream().write(sb.toString().getBytes());      response.flushBuffer();    } catch (IOException e) {      e.printStackTrace();    }  }}

其實現過程很簡單,就是先從路徑中分離出來資源uri,然后從static目錄下讀取文件,并輸出到前端。因為只做簡單演示,所以這里只處理了文本類型的文件,圖片文件可以做類似的處理。當然,我們在實際中肯定不會這么做,Spring boot也肯定有更好的解決辦法。不過這個辦法雖然有點笨,但確是最本質的東西,無論框架如何方便的幫我們處理了這類問題,但是拋開框架,我們依然要能夠熟練的寫出一個web項目,只有知道其實現原理,你才會在遇到問題時能得心應手?,F在我們再來看看Spring boot對靜態資源的支持。

二、Spring boot默認靜態資源訪問方式

Spring boot默認對/**的訪問可以直接訪問四個目錄下的文件:

classpath:/public/

classpath:/resources/

classpath:/static/

classpath:/META-INFO/resouces/

我們現在就在資源文件resources目錄下建立如下四個目錄:

Spring,Boot,靜態資源

注意藍色條下的資源文件夾resources與類路徑下的文件夾classpath:/resources是不同的,藍色條下的resources代表的是該目錄下的文件為資源文件,在打包的時候會將該目錄下的文件全部打包的類路徑下,這個名稱是可以改的,在pom.xml指定資源目錄即可:

<resources>   <resource>     <directory>src/main/resources</directory>   </resource></resources>

而類路徑下的resources是spring boot默認的靜態資源文件夾之一,和public、static以及MEAT-INFO/resources的功能相同?,F在我們重啟Spring boot就可以通過

http://localhost:8080/1.html

http://localhost:8080/2.html

http://localhost:8080/3.html

http://localhost:8080/4.html

四個URL訪問到四個目錄下的靜態資源了。

三、自定義靜態資源目錄

通過第二節內容我們已經知道了Spring boot默認可以訪問的靜態資源的目錄,但是大家肯定會想,這個目錄是固定的嗎?我們可不可以自己定義靜態資源目錄?答案是肯定的,我們現在就來自定義一個靜態資源目錄,我們定義一個images的目錄來存放圖片,所有/image/**的路徑都會訪問images目錄下的資源:

@Configurationpublic class ImageMvcConfig extends WebMvcConfigurerAdapter {  @Override  public void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("/image/**")        .addResourceLocations("classpath:/images/");  }}

這段代碼應該比較簡單,@Configuration標識一個配置類,這個在前面的文章中提到過多次。WebMvcConfigurerAdapter是Spring提供的一個配置mvc的適配器,里面有很多配置的方法,addResourceHandlers就是專門處理靜態資源的方法,其他方法后續我們還會講到?,F在我們在驗證上面的配置是否有效。我在images目錄下放了一張spring.jpg的圖片,現在我們通過http://localhost:8080/image/spring.jpg來訪問圖片:

Spring,Boot,靜態資源

其實除了上面的辦法還有一種更簡單的辦法,就是直接在application.yml中配置即可:

spring: mvc:  static-path-pattern: /image/** resources:  static-locations: classpath:/images/

static-path-pattern:訪問模式,默認為/**,多個可以逗號分隔

static-locations:資源目錄,多個目錄逗號分隔,默認資源目錄為classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

注意,這個配置會覆蓋Spring boot默認的靜態資源目錄,例如如果按示例中配置,則無法再訪問static、public、resources等目錄下的資源了。

四、總結

本文主要給大家分享了Spring boot 對靜態資源的處理方式,Spring boot 默認可以訪問classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/四個目錄下的靜態資源,我們也可以根據自己的需要進行個性化配置。最后,需要說明一點的是,如果這四個目錄中存在相同名稱的資源,那會優先返回哪個目錄下的資源呢?大家通過static-locations的默認值順序應該能猜到,默認情況下,Spring boot會優先返回/META-INF/resources下的資源。當然,因為我們可以自定義static-locations的值,所以這個優先順序也是可以調整的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久青草国产97香蕉在线视频| 欧美黄色三级网站| 国产精品成人av在线| 欧美黑人巨大xxx极品| 亚洲精品国产精品国自产在线| 热99久久精品| 91久久久久久久| 国产精品久久久久久久久久新婚| 欧美日韩在线视频一区二区| 亚洲国产日韩欧美在线动漫| 不卡中文字幕av| 国产一区二区三区直播精品电影| 日韩有码在线视频| 波霸ol色综合久久| 九九热这里只有精品6| 97久久久免费福利网址| 2021国产精品视频| 亚洲无线码在线一区观看| 欧美激情中文字幕乱码免费| 日韩小视频在线观看| 亚洲精品美女久久久久| 欧美疯狂性受xxxxx另类| 日韩人在线观看| 91精品成人久久| 国产精品私拍pans大尺度在线| 韩剧1988在线观看免费完整版| 91视频九色网站| 精品国产精品三级精品av网址| 精品久久久久久久久久久久久| www日韩欧美| 91精品国产乱码久久久久久久久| 日韩中文字幕精品| 欧美激情影音先锋| 国产精品成人一区二区| 中文字幕精品在线| 国产综合在线看| 欧美丰满老妇厨房牲生活| 久久人人爽人人| 国产精品第一视频| 美女啪啪无遮挡免费久久网站| 欧美肥臀大乳一区二区免费视频| 欧美日韩国产123| 久久的精品视频| 亚洲欧洲日本专区| 国产福利视频一区| 亚洲国产高清福利视频| 亚洲娇小xxxx欧美娇小| 亚洲国产日韩欧美综合久久| 欧美日本黄视频| 中文字幕亚洲无线码在线一区| 日韩美女av在线免费观看| 亚洲综合中文字幕在线| 在线观看国产精品淫| 亲子乱一区二区三区电影| 97成人精品区在线播放| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美日韩裸体免费视频| 亚洲视频在线视频| 性欧美激情精品| 亚洲风情亚aⅴ在线发布| 日韩欧美有码在线| 久久五月天色综合| 正在播放亚洲1区| 国产精品久久久久77777| 久久伊人精品视频| 日韩精品免费一线在线观看| 欧美激情欧美激情在线五月| 亚洲国产精品成人精品| 亚洲国产天堂久久综合网| 国外视频精品毛片| 亚洲欧美一区二区三区久久| 国产亚洲人成a一在线v站| 亚洲精品久久久久久久久久久| 7777精品视频| 欧美自拍视频在线观看| 午夜精品一区二区三区视频免费看| 92版电视剧仙鹤神针在线观看| 日韩电影中文字幕在线| 色av吧综合网| 国产精品久久婷婷六月丁香| 亚洲精品福利在线| 国产亚洲视频中文字幕视频| 2019中文字幕在线观看| 久久久精品亚洲| 综合久久五月天| 精品久久久久久亚洲国产300| 国产精品久久久久久久久久三级| 国产91|九色| 欧美区在线播放| 国产一区二区动漫| 在线观看欧美www| 国产成人啪精品视频免费网| 26uuu另类亚洲欧美日本老年| 韩剧1988免费观看全集| 国产精品久久久久久av福利软件| 中文字幕综合在线| 欧美精品久久久久久久免费观看| 日韩在线小视频| 亚洲精品动漫久久久久| 97在线视频免费播放| 欧美电影免费在线观看| 精品国产欧美一区二区三区成人| 国产成人精品免高潮费视频| 在线看欧美日韩| 一个人看的www欧美| 国产福利视频一区二区| 91久久国产综合久久91精品网站| 国产精品亚洲综合天堂夜夜| 亚洲一区二区三区视频播放| 久久视频国产精品免费视频在线| 欧美第一黄网免费网站| 国产一区红桃视频| 国产97色在线| 久久国产精品99国产精| 欧美精品在线免费观看| 国产一区二区香蕉| 国产91精品久久久久| 国产亚洲精品日韩| 亚洲性av在线| 欧美电影院免费观看| 136fldh精品导航福利| 91在线免费视频| 国产一区二区黄| 亚洲国语精品自产拍在线观看| 亚洲成人网在线| 日韩中文综合网| 日韩中文字幕在线视频| 欧美怡红院视频一区二区三区| 欧美激情精品久久久久久久变态| 亚洲va欧美va国产综合剧情| 成人激情视频在线观看| 97国产在线视频| 精品中文字幕在线| 国产精自产拍久久久久久蜜| 亚洲精品视频免费在线观看| 日韩欧美精品免费在线| 国产欧美精品日韩精品| 亚洲国内精品视频| 亚洲精品资源美女情侣酒店| 日韩免费观看高清| 日韩视频永久免费观看| 91亚洲精品一区二区| 91精品综合久久久久久五月天| 欧美在线一级va免费观看| 欧美最猛性xxxxx亚洲精品| 亚洲国产精品va在线观看黑人| 久久av红桃一区二区小说| 亚洲成人三级在线| 国产一区二区精品丝袜| 国产精品私拍pans大尺度在线| 亚洲欧美制服丝袜| 久久综合免费视频| 日本精品一区二区三区在线播放视频| 国产精品久久久久久搜索| 亚洲欧洲自拍偷拍| 亚洲第一av网| 国产97在线|日韩| 亚洲毛茸茸少妇高潮呻吟| 91在线观看欧美日韩| 亚洲最新av网址| 国产精品久久久久久久久久东京| 亚洲tv在线观看| 中文字幕亚洲图片| 欧美极品少妇xxxxⅹ喷水|