最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot詳細講解靜態(tài)資源導入的實現(xiàn)

 更新時間:2022年05月26日 11:12:58   作者:奔走的王木木Sir  
在Web開發(fā)過程中,我們需要接觸許多靜態(tài)資源,如CSS、JS、圖片等;在之前的開發(fā)中,這些資源都放在Web目錄下,用到的時候按照對應路徑訪問即可。不過在SpringBoot項目中,沒有了Web目錄,那這些靜態(tài)資源該放到哪里去,又要如何訪問呢?這就是我們要講的靜態(tài)資源導入

SpringBootWeb開發(fā)

回顧一下:

springboot幫助我們配置了什么,能不能進行修改,能修改哪些,能否擴展?

  1. xxxAutoConfiguration:向容器中自動配置組件
  2. xxxProperties:自動配置類,裝配配置文件中自定義的一些內(nèi)容

開發(fā)要解決的問題:

  1. 導入靜態(tài)資源
  2. 首頁
  3. jsp
  4. 裝配擴展springmvc
  5. 增刪改查
  6. 攔截器

1. 靜態(tài)資源導入

先創(chuàng)建一個普通的springboot項目,主需要加入web即可。

我們在進行項目之前首先要確保環(huán)境正確,我們先用helloController測試一下。如果能跳轉(zhuǎn)成功則進行接下來的步驟

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello(){
        return "HelloWord";
    }
}

靜態(tài)資源的映射規(guī)則:

springmvc的web配置都在WebMvcAutoConfiguration 這個配置類里面;進去查看我們發(fā)現(xiàn)有一個添加資源處理的方法addResourceHandlers我把代碼拿了過來。不知道怎么搜的可以看下面

public void addResourceHandlers(ResourceHandlerRegistry registry) {
            if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
            } else {
                Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
                CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
                if (!registry.hasMappingForPattern("/webjars/**")) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }
                String staticPathPattern = this.mvcProperties.getStaticPathPattern();
                if (!registry.hasMappingForPattern(staticPathPattern)) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }
            }
        }

快速搜索內(nèi)容:雙擊Shift鍵,框中直接搜你想搜的類或者方法。

第一種:使用原本的,也就是第一個if

在里面我們可以看到所有的/webjars/**, 都需要去classpath:/META-INF/resources/webjars/找對應的資源;

webjars

Webjars本質(zhì)就是以jar包的方式引入我們的靜態(tài)資源 , 我們以前要導入一個靜態(tài)資源文件,直接導入即可。

使用SpringBoot需要使用Webjars,我們可以去搜索一下:

網(wǎng)站:https://www.webjars.org 進去直接搜索需要的東西即可

要使用jQuery,我們只要要引入jQuery對應版本的pom依賴即可!

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>

導入完畢之后我們可以查看webjars的目錄結構,并且此時可以訪問jquery.js文件了。

導入完成后我們進行查看,運行之后輸入鏈接http://localhost:8080/webjars/jquery/3.4.1/jquery.js

使用自己的靜態(tài)資源

上述是第一種if,那么沒找到怎么辦呢,就出現(xiàn)了下面的情況

String staticPathPattern = this.mvcProperties.getStaticPathPattern();
if (!registry.hasMappingForPattern(staticPathPattern)) {
    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));

我們?nèi)ゲ榭磗taticPathPattern發(fā)現(xiàn)第二種映射規(guī)則 :/** , 訪問當前的項目任意資源,它會去找 resourceProperties 這個類,

發(fā)現(xiàn)里面的有對應的四個位置。ResourceProperties 可以設置和我們靜態(tài)資源有關的參數(shù);這里面指向了它會去尋找資源的文件夾。

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { 
    "classpath:/META-INF/resources/",
  "classpath:/resources/", 
    "classpath:/static/", 
    "classpath:/public/" 
};

在這四個目錄下的靜態(tài)資源同樣可以被我們識別到

但是會有優(yōu)先級,resources優(yōu)先級最高,static其次,public最低

總結

在springboot我們可以使用一下方式處理靜態(tài)資源

  1. webjars,localhost:8080/webjars/
  2. public,static,/**,resources localhost:8080/

優(yōu)先級resources優(yōu)先級最高,static其次,public最低

2.制作特殊的首頁

我們什么都不管的時候,訪問"localhost:8080"會是默認的頁面

而原理也就在下方這個代碼中

我們讓首頁進行改變。需要添加一個靜態(tài)資源,讓首頁換一個樣子

增加一個界面,重新運行

成功后的結果

這樣就是實現(xiàn)了首頁界面的定制

歡迎頁,靜態(tài)資源文件夾下的所有 index.html 頁面;被 /** 映射。

比如我訪問 http://localhost:8080/ ,就會找靜態(tài)資源文件夾下的 index.html

新建一個 index.html ,在我們上面的3個目錄中任意一個;然后訪問測試 http://localhost:8080/看結果!

圖標轉(zhuǎn)變

這個在新的版本代碼已經(jīng)變成了下圖的樣子

之前是可以在springboot的配置靜態(tài)內(nèi)容位置中找到favicon.ico,它將自動用作應用程序的favicon。圖標名字就是favicon.ico

#關閉默認圖標
spring.mvc.favicon.enabled=false

然后可以自己換一個圖標放在public目錄下,清楚緩存,刷新網(wǎng)頁就可以了。

Thymeleaf模板引擎

模板引擎的作用就是我們來寫一個頁面模板,比如有些值呢,是動態(tài)的,我們寫一些表達式。而這些值,從哪來呢,就是我們在后臺封裝一些數(shù)據(jù)。然后把這個模板和這個數(shù)據(jù)交給我們模板引擎,模板引擎按照我們這個數(shù)據(jù)幫你把這表達式解析、填充到我們指定的位置,然后把這個數(shù)據(jù)最終生成一個我們想要的內(nèi)容給我們寫出去,這就是我們這個模板引擎

如果我們沒有模板引擎的話,在頁面中會提示500

引入Thymeleaf

在項目中加入依賴

<!--thymeleaf-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

Thymeleaf 官網(wǎng):https://www.thymeleaf.org/

Thymeleaf 在Github 的主頁:https://github.com/thymeleaf/thymeleaf

Spring官方文檔:找到我們對應的版本

https://docs.spring.io/spring-boot/docs/2.3.7.RELEASE/reference/htmlsingle/#using-boot-starter

我們可以有通過上述的頁面找到我們需要的依賴,進而復制粘貼即可。

引入之后我們再次運行。nice

注意: 使用Thymeleaf,只需要導入對應的依賴即可。同時我們的html頁面試放在我們的templates目錄下的。

至于為什么,我們看源碼,這段源碼在ThymeleafProperties下。

private String prefix = "classpath:/templates/";
private String suffix = ".html";

取值

那么我們應該怎么取值呢

首先在controller下編寫代碼

@Controller
public class HelloController {
    @RequestMapping("/test")
    public String hello(Model model){
        model.addAttribute("msg","王木木");
        return "test";
    }
}

接下來我們在html頁面中編寫

因為我們要使用thymeleaf,需要在html文件中導入命名空間的約束。

<html lang="en" xmlns:th="http://www/thymeleaf.org">
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www/thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div th:text="${msg}"></div>
</body>
</html>

成功運行后

這里需要這個的th標簽。所有的html元素都科一被thymeleaf替換接管,格式為th:元素名

有無轉(zhuǎn)義

從controller傳一段信息

model.addAttribute("msg","<h1>王木木</h1>");

html中使用轉(zhuǎn)義和不轉(zhuǎn)義的情況

<div th:text="${msg}"></div>
<div th:utext="${msg}"></div>

運行結果

循環(huán)

同樣在controller里傳一段信息

model.addAttribute("users", Arrays.asList("wangmumu","王木木"));

接下來在html中進行取值

<h2 th:each="user:${users}" th:text="${user}"></h2>

運行結果

到此這篇關于SpringBoot詳細講解靜態(tài)資源導入的實現(xiàn)的文章就介紹到這了,更多相關SpringBoot靜態(tài)資源導入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot?分模塊開發(fā)的操作方法

    SpringBoot?分模塊開發(fā)的操作方法

    這篇文章主要介紹了SpringBoot?分模塊開發(fā)的操作方法,通過在原項目新增一個maven模塊,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • springboot schedule 解決定時任務不執(zhí)行的問題

    springboot schedule 解決定時任務不執(zhí)行的問題

    這篇文章主要介紹了springboot schedule 解決定時任務不執(zhí)行的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • IDEA利用jclasslib 修改class文件的實現(xiàn)

    IDEA利用jclasslib 修改class文件的實現(xiàn)

    這篇文章主要介紹了IDEA利用jclasslib 修改class文件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Java實現(xiàn)接口限流方案

    Java實現(xiàn)接口限流方案

    這篇文章主要為大家詳細介紹了Java實現(xiàn)接口限流方案,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • JDBC編程實現(xiàn)文件、圖片的存儲方法

    JDBC編程實現(xiàn)文件、圖片的存儲方法

    這篇文章主要介紹了JDBC編程實現(xiàn)文件、圖片的存儲方法,以實例形式分析了Java基于JDBC操作數(shù)據(jù)庫的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 淺談JavaWeb中的web.xml配置部署描述符文件

    淺談JavaWeb中的web.xml配置部署描述符文件

    下面小編就為大家?guī)硪黄獪\談JavaWeb中的web.xml配置部署描述符文件。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • SpringSecurity之SecurityContextHolder使用解讀

    SpringSecurity之SecurityContextHolder使用解讀

    這篇文章主要介紹了SpringSecurity之SecurityContextHolder使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java基于jdbc連接mysql數(shù)據(jù)庫功能實例詳解

    java基于jdbc連接mysql數(shù)據(jù)庫功能實例詳解

    這篇文章主要介紹了java基于jdbc連接mysql數(shù)據(jù)庫功能,結合實例形式詳細分析了jdbc連接mysql數(shù)據(jù)庫的原理、步驟、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • Java實現(xiàn)圖片比對算法

    Java實現(xiàn)圖片比對算法

    這篇文章主要為大家詳細介紹了Java實現(xiàn)圖片比對算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Kotlin基礎教程之操作符與操作符重載

    Kotlin基礎教程之操作符與操作符重載

    這篇文章主要介紹了Kotlin基礎教程之操作符與操作符重載的相關資料,需要的朋友可以參考下
    2017-05-05

最新評論

昌江| 高淳县| 天峻县| 永寿县| 建昌县| 华阴市| 镇坪县| 塔城市| 黔东| 商城县| 改则县| 寻乌县| 阳高县| 祁阳县| 延安市| 玉溪市| 渝中区| 彩票| 五峰| 嘉兴市| 天镇县| 甘孜| 大渡口区| 云安县| 通江县| 江西省| 会理县| 常熟市| 湾仔区| 临桂县| 沂源县| 安国市| 宾阳县| 西城区| 保靖县| 顺义区| 孟州市| 墨脱县| 明水县| 舟曲县| 揭西县|