使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

這篇文章給大家介紹使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)建站:公司2013年成立為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為數(shù)千家公司企業(yè)提供了專業(yè)的成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)和網(wǎng)站推廣服務(wù), 按需求定制開發(fā)由設(shè)計(jì)師親自精心設(shè)計(jì),設(shè)計(jì)的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對(duì)手,根據(jù)客戶的實(shí)際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。

在SpringBoot中加載靜態(tài)資源和在普通的web應(yīng)用中不太一樣。默認(rèn)情況下,spring Boot從classpath下一個(gè)叫/static(/public,/resources或/META-INF/resources)的文件夾或從ServletContext根目錄提供靜態(tài)內(nèi)容。下面我們來寫個(gè)例子看一下就會(huì)一目了然了:首先看一下項(xiàng)目的目錄結(jié)構(gòu):

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

我們?cè)趓esources下面的templates目錄下建一個(gè)home.html的文件,完整目錄為:src/main/resources/templates/home.html。內(nèi)容如下:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首頁</title> 
</head> 
<body> 
我是首頁: 
<!--<image th:src="@{/image/267862-1212151Z12099.jpg}"/> --> 
</body> 
</html> 

如果我們想要訪問home.html應(yīng)該怎么做呢?我們先來看第一種方式:

1、我們?cè)趙eb.controller這個(gè)包下面建一個(gè)Controller類:ThymeleafTestController.代碼內(nèi)容如下:

package com.zkn.learnspringboot.web.controller; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@Controller 
@RequestMapping("thymeleaf") 
public class ThymeleafTestController { 
 
  @RequestMapping("home") 
  public String getHome(){ 
 
    return "home"; 
  } 
} 

寫到這里你一定非常眼熟,這不就是SpringMVC的寫法嗎?沒錯(cuò)就是SpringMVC的寫法:下面我們來訪問一下:http://localhost:8003/thymeleaf/home。結(jié)果如圖所示:

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

因?yàn)镾pringBoot集成了Thymeleaf,所以它會(huì)默認(rèn)查找resources下面的templates這個(gè)目錄下的文件。templates這個(gè)目錄的名字不要寫錯(cuò)了。接著我又有了這樣的需求,假設(shè)我想在我的home.html中引入一些其他的靜態(tài)資源文件,比如我想在home.html中引入一張圖片:那我們應(yīng)該怎么做呢?

首先,我們需要在resources下面建一個(gè)static或者public的目錄,你不建立目錄也行,直接放到resources下面,接著我們?cè)俳⒁粋€(gè)image的目錄,最終的目錄結(jié)構(gòu)如圖所示:

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

我們?cè)趇mage這個(gè)目錄下放入一張圖片,然后我們?cè)趆ome.html中引入一下這張圖片,最終的代碼如下:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head>WebMvcConfigurerAdapter 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首頁</title> 
</head> 
  <body> 
我是首頁: 
  <image th:src="@{/image/267862-1212151Z12099.jpg}" width="100px" height="50px" /> 
  </body> 
</html> 

看到上面的寫法你可能會(huì)有些奇怪,th:src和@{}這都是什么鬼。其實(shí)這是Thymeleaf的語法。@{}是引入外部資源用的。下面我們?cè)賮碓L問一下,結(jié)果如下圖所示:

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

這樣我們就訪問到了image目錄下的圖片了。

可能會(huì)有人說難道我只能放到static、public或者直接放到resources下面嗎?我換個(gè)目錄就不行了嗎?那當(dāng)然不是這樣的,下面我們來換另外一種寫法:

在我現(xiàn)在的這個(gè)項(xiàng)目中前臺(tái)是用React-redux寫的,后臺(tái)SpringBoot只是用來提供接口的,我只需要一個(gè)首頁來把編譯后的react-redux引入到項(xiàng)目中就可以了,如果我想直接訪問這個(gè)首頁那我應(yīng)該怎么做呢?SpringMVC為我們提供了這樣的一個(gè)類:WebMvcConfigurerAdapter。我們就是借助于這個(gè)類來實(shí)現(xiàn)我們需要的功能的。我們寫一個(gè)類來繼承這個(gè)類,代碼如下:

package com.zkn.learnspringboot.config; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.util.ResourceUtils; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 
 
  @Override 
  public void addResourceHandlers(ResourceHandlerRegistry registry) { 
 
    registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/",ResourceUtils.CLASSPATH_URL_PREFIX+"/image/"); 
    super.addResourceHandlers(registry); 
  } 
   
} 

我們重寫了addResourceHandlers這個(gè)方法來重新注冊(cè)了一個(gè)資源處理器。接著我們?cè)趤碓L問一下看看:http://localhost:8003/templates/home.html。結(jié)果如下圖所示:

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

注意了這里我們是直接訪問的home.html這個(gè)文件。和我們預(yù)期的效果是一樣的。接著可能會(huì)有人說:如果我也想在home.html中引入靜態(tài)資源要怎么辦呢?比如說上面的那個(gè)例子,我要引入一個(gè)一張圖片。也簡單,那我們就再注冊(cè)一個(gè)資源處理器就OK了。Java代碼如下:

package com.zkn.learnspringboot.config; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.util.ResourceUtils; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 
 
  @Override 
  public void addResourceHandlers(ResourceHandlerRegistry registry) { 
 
    registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/"); 
    registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/static/"); 
    super.addResourceHandlers(registry); 
  } 
 
} 

home.html中的內(nèi)容如下所示:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首頁</title> 
</head> 
  <body> 
我是首頁: 
  <image src="/static/image/267862-1212151Z12099.jpg" width="100px" height="50px" /> 
  </body> 
</html> 

接著我們?cè)僭L問以下看看什么效果:http://localhost:8003/templates/home.html

使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源

關(guān)于使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前標(biāo)題:使用SpringBoot如何實(shí)現(xiàn)加載靜態(tài)資源
本文路徑:http://bm7419.com/article8/iehhip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、ChatGPT、靜態(tài)網(wǎng)站小程序開發(fā)、做網(wǎng)站、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化