SpringBoot靜態資源目錄
默認情況下,Spring提供瞭如下幾個靜態資源目錄:
目錄 | 說明 |
---|---|
/static | classpath:/static/ |
/public | classpath:/public/ |
/resources | classpath:/resources/ |
/META-INF/resources | classpath:/META-INF/resources |
可以通過spring.resources.static-locations配置指定靜態文件的位置。
注意:一旦自己指定的靜態資目錄,系統默認的靜態資源目錄就會失效。一般情況下系統默認的就已經夠使用了,儘量不要自己定義。
spring:
resources:
static-locations: classpath:/mystatic/ # 指定靜態資源目錄
favicon.icon
如果在配置的靜態資源目錄中favicon.icon文件,SpringBoot會自動將其設置爲應用圖標。
歡迎頁面
SpringBoot支持靜態和模板歡迎頁,它首先在靜態資源目錄查看index.html文件作爲首頁,若未找到則查找index模板。
使用webjars管理JS和CSS
WebJars簡介
我們在開發Java web項目的時候會使用像Maven,Gradle等構建工具以實現對jar包版本依賴管理,以及項目的自動化管理,但是對於JavaScript,Css等前端資源包,一般情況下,我們採用拷貝到webapp下的方式,通過手工進行管理,這種通方式容易導致文件混亂、版本不一致等問題,而且無法對這些資源進行依賴管理。
WebJars通過將這些通用資源(JavaScript,Css等)打成jar包文件,然後藉助Maven對資源進行統一依賴管理,從而保證這些WEB資源版本的唯一性。
WebJars官網:https://www.webjars.org/ 。我們可以在這個網站上找到自己需要的資源,然後在自己的工程中添加Maven依賴,就可以直接使用這些資源了。
WebJars並不僅僅是依賴這麼簡單,它還提供瞭如下功能:
- 將靜態資源版本化,更利於升級和維護。
傳統的靜態資源需要自行維護,資源種類繁多,使得項目後期越來越臃腫,維護版本升級也變得困難,而使用WebJars方式進行管理後,版本升級問題迎刃而解。 - 剝離靜態資源,提高編譯速度和打包效率。
經測試,使用WebJars的方式管理依賴可以給項目的編譯速度帶來2-5倍的速度提升,還在猶豫的小夥伴快點嘗試起來吧! - 實現資源共享,有利於統一前端開發。
- 清晰的管理web依賴
- 通過Maven、Gradle等項目管理工具就可以下載WEB依賴
- 解決WEB組件中傳遞依賴的問題以及版本問題
- 頁面依賴的版本自動檢測功能
- webjars就是以jar包的方式引入靜態資源;
- 通過WebJars可以讓我們以jar包的形式來使用前端的各種框架、組件。
- WebJars提供給我們前端資源的jar包形勢,我們就可以進行依賴管理。
示例
第一步:在WebJars官網查找對於的組件,比如jquery
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>jquery</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>4.5.0</version>
</dependency>
第二步:application.yml
server:
port: 80
servlet:
context-path: /wjd
spring:
thymeleaf:
#前綴,也就是模板存放的路徑
prefix: classpath:/templates/
#編碼格式
encoding: UTF-8
#關閉緩存,不然無法看到實時頁面
cache: false
#後綴
suffix: .html
#設置不嚴格的html
mode: HTML
servlet:
content-type: text/html
第三步:定義用戶請求的Controller:
@Controller
public class DispatcherController {
@RequestMapping("/demo")
public String demo(){
return "demo";
}
@RequestMapping("/demo2")
public String demo2(){
return "demo2";
}
}
第四步:頁面引入
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>webjars不使用版本定位工具</title>
<link rel="stylesheet" th:href="@{/webjars/bootstrap/4.5.0/css/bootstrap.min.css}" />
<script th:src="@{/webjars/bootstrap/4.5.0/js/bootstrap.min.js}"></script>
<script th:src="@{/webjars/jquery/3.5.1/dist/jquery.js}"></script>
</head>
<body>
<div class="container"><br/>
<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
Hello, <strong>Dalaoyang!</strong>
</div>
</div>
<hr>
haha
<hr>
<button id="btn">JQuery</button>
<script type="text/javascript">
$("#btn").click(function () {
alert(23+32);
});
</script>
</body>
</html>
SpringBoot會將webjar中路徑/webjars/**
的訪問重定向到項目的classpath:/META-INF/resources/webjars/*
中。
第五步:啓動項目,查看效果:
單擊按鈕:
第六步:代碼優化
像上面的每個引用文件裏都要帶一個版本,假如項目要升級,需要挨個修改版本號,十分麻煩。解決辦法,Maven中添加版本定位工具:
<dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-locator-core</artifactId>
<version>0.45</version>
</dependency>
調整後的頁面代碼:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>WebJars使用版本定位工具</title>
<link rel="stylesheet" th:href="@{/webjars/bootstrap/css/bootstrap.min.css}" />
<script th:src="@{/webjars/bootstrap/js/bootstrap.min.js}"></script>
<script th:src="@{/webjars/jquery/dist/jquery.js}"></script>
</head>
<body>
<div class="container"><br/>
<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
Hello, <strong>Dalaoyang!</strong>
</div>
</div>
<hr>
<button id="btn">JQuery</button>
<script type="text/javascript">
$("#btn").click(function () {
alert(23+32);
});
</script>
</body>
</html>