欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot詳細(xì)講解靜態(tài)資源導(dǎo)入的實(shí)現(xiàn)

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

SpringBootWeb開(kāi)發(fā)

回顧一下:

springboot幫助我們配置了什么,能不能進(jìn)行修改,能修改哪些,能否擴(kuò)展?

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

開(kāi)發(fā)要解決的問(wèn)題:

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

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

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

我們?cè)谶M(jìn)行項(xiàng)目之前首先要確保環(huán)境正確,我們先用helloController測(cè)試一下。如果能跳轉(zhuǎn)成功則進(jìn)行接下來(lái)的步驟

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

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

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

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鍵,框中直接搜你想搜的類或者方法。

第一種:使用原本的,也就是第一個(gè)if

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

webjars

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

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

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

要使用jQuery,我們只要要引入jQuery對(duì)應(yīng)版本的pom依賴即可!

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

導(dǎo)入完畢之后我們可以查看webjars的目錄結(jié)構(gòu),并且此時(shí)可以訪問(wèn)jquery.js文件了。

導(dǎo)入完成后我們進(jìn)行查看,運(yùn)行之后輸入鏈接http://localhost:8080/webjars/jquery/3.4.1/jquery.js

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

上述是第一種if,那么沒(méi)找到怎么辦呢,就出現(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ī)則 :/** , 訪問(wèn)當(dāng)前的項(xiàng)目任意資源,它會(huì)去找 resourceProperties 這個(gè)類,

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

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

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

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

總結(jié)

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

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

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

2.制作特殊的首頁(yè)

我們什么都不管的時(shí)候,訪問(wèn)"localhost:8080"會(huì)是默認(rèn)的頁(yè)面

而原理也就在下方這個(gè)代碼中

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

增加一個(gè)界面,重新運(yùn)行

成功后的結(jié)果

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

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

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

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

圖標(biāo)轉(zhuǎn)變

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

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

#關(guān)閉默認(rèn)圖標(biāo)
spring.mvc.favicon.enabled=false

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

Thymeleaf模板引擎

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

如果我們沒(méi)有模板引擎的話,在頁(yè)面中會(huì)提示500

引入Thymeleaf

在項(xiàng)目中加入依賴

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

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

Thymeleaf 在Github 的主頁(yè):https://github.com/thymeleaf/thymeleaf

Spring官方文檔:找到我們對(duì)應(yīng)的版本

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

我們可以有通過(guò)上述的頁(yè)面找到我們需要的依賴,進(jìn)而復(fù)制粘貼即可。

引入之后我們?cè)俅芜\(yùn)行。nice

注意: 使用Thymeleaf,只需要導(dǎo)入對(duì)應(yīng)的依賴即可。同時(shí)我們的html頁(yè)面試放在我們的templates目錄下的。

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

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

取值

那么我們應(yīng)該怎么取值呢

首先在controller下編寫代碼

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

接下來(lái)我們?cè)趆tml頁(yè)面中編寫

因?yàn)槲覀円褂胻hymeleaf,需要在html文件中導(dǎo)入命名空間的約束。

<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>

成功運(yùn)行后

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

有無(wú)轉(zhuǎn)義

從controller傳一段信息

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

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

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

運(yùn)行結(jié)果

循環(huán)

同樣在controller里傳一段信息

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

接下來(lái)在html中進(jìn)行取值

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

運(yùn)行結(jié)果

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

相關(guān)文章

  • spring中ioc是什么

    spring中ioc是什么

    IoC是一種讓服務(wù)消費(fèi)者不直接依賴于服務(wù)提供者的組件設(shè)計(jì)方式,是一種減少類與類之間依賴的設(shè)計(jì)原則。下面通過(guò)本文給大家分享spring中ioc的概念,感興趣的朋友一起看看吧
    2017-09-09
  • 如何在springBoot下搭建日志框架

    如何在springBoot下搭建日志框架

    這篇文章主要介紹了如何在springBoot下搭建日志框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Mybatis-Plus saveBatch()批量保存失效的解決

    Mybatis-Plus saveBatch()批量保存失效的解決

    本文主要介紹了Mybatis-Plus saveBatch()批量保存失效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 學(xué)習(xí)Java模擬實(shí)現(xiàn)百度文檔在線瀏覽

    學(xué)習(xí)Java模擬實(shí)現(xiàn)百度文檔在線瀏覽

    這片文章介紹了如何使用Java模擬實(shí)現(xiàn)百度文檔在線瀏覽,文章思路清晰,需要的朋友可以參考下
    2015-07-07
  • Spring源碼解析容器初始化構(gòu)造方法

    Spring源碼解析容器初始化構(gòu)造方法

    這篇文章主要介紹了Spring源碼解析容器初始化構(gòu)造方法,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Java LinkedList的實(shí)現(xiàn)原理圖文詳解

    Java LinkedList的實(shí)現(xiàn)原理圖文詳解

    今天小編就為大家分享一篇關(guān)于Java LinkedList的實(shí)現(xiàn)原理圖文詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java爬蟲爬取漫畫示例

    Java爬蟲爬取漫畫示例

    這篇文章主要介紹了Java爬蟲爬取漫畫示例,大部分的爬蟲入門教學(xué)都是爬取圖片的,本文就來(lái)測(cè)試一下爬取網(wǎng)站的漫畫,需要的朋友可以參考下
    2023-04-04
  • SpringBoot?+DynamicDataSource切換多數(shù)據(jù)源的全過(guò)程

    SpringBoot?+DynamicDataSource切換多數(shù)據(jù)源的全過(guò)程

    這篇文章主要介紹了SpringBoot?+DynamicDataSource切換多數(shù)據(jù)源的全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java生成一定規(guī)則遞增編號(hào)的示例代碼

    Java生成一定規(guī)則遞增編號(hào)的示例代碼

    項(xiàng)目需求中有時(shí)需要生成一定規(guī)則遞增編號(hào),本文主要介紹了Java生成一定規(guī)則遞增編的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • JDBC實(shí)現(xiàn)Mysql自動(dòng)重連機(jī)制的方法詳解

    JDBC實(shí)現(xiàn)Mysql自動(dòng)重連機(jī)制的方法詳解

    最近在工作中發(fā)現(xiàn)了一個(gè)問(wèn)題,通過(guò)查找相關(guān)的資料終于解決了,下面這篇文章主要給大家介紹了關(guān)于JDBC實(shí)現(xiàn)Mysql自動(dòng)重連機(jī)制的相關(guān)資料,文中給出多種解決的方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07

最新評(píng)論