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

SpringBoot靜態(tài)資源CSS等修改后再運行無效的解決

 更新時間:2021年12月15日 14:53:08   作者:學(xué)而不思則忘  
這篇文章主要介紹了SpringBoot靜態(tài)資源CSS等修改后再運行無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot靜態(tài)資源CSS等修改后再運行無效問題

問題背景

在美化網(wǎng)頁過程中,修改好CSS后在本地已經(jīng)可以顯示出我想要的效果了。于是就把修改好后的css加載到springboot中運行,結(jié)果問題出現(xiàn)了:我修改后的css樣式始終不能加載!打開F12看到css樣式成功的被請求,然后再進一步點進去看css文件,發(fā)現(xiàn)我修改的部分并沒有加載,現(xiàn)在用的css還是我修改以前的css。這里我注意到一個細(xì)節(jié),然后才明白是怎么回事

在這里插入圖片描述

原來spring boot會把靜態(tài)文件緩存到瀏覽器本地。但這樣就造成了一個問題:如果服務(wù)器靜態(tài)文件修改,瀏覽器端在未過期之前是不會重新加載文件的。此時需要通過版本號來控制。spring boot版本號支持兩種,一種是文件md5,另一種是固定版本號。我采用的是md5方式,spring boot啟動時會計算每個靜態(tài)文件的md5值并緩存,瀏覽器訪問時每個靜態(tài)文件后綴前加上md5值作為版本號,如果服務(wù)器md5值改變則瀏覽器重新加載。(需要重啟應(yīng)用才會重新生成md5)

下面來設(shè)置md5方式

1、先設(shè)置文件配置application.properties

# 資源緩存時間,單位秒
spring.resources.cache.period=604800
# 開啟gzip壓縮
spring.resources.chain.compressed=true
# 啟用緩存
spring.resources.chain.cache=true
# 使用MD5版本號
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**

2、添加靜態(tài)資源控制類,使用ResourceUrlProvider

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.servlet.resource.ResourceUrlProvider;
/**
 *  使用ResourceUrlProvider進行版本管理
 *  并避免在版本發(fā)生改變時,由于瀏覽器緩存而產(chǎn)生資源版本未改變的錯誤
 */
@ControllerAdvice
public class ControllerConfig {
    @Autowired
    private ResourceUrlProvider resourceUrlProvider;
    @ModelAttribute("urls")
    public ResourceUrlProvider urls() {
        return this.resourceUrlProvider;
    }
}

3、在網(wǎng)頁中引用靜態(tài)文件

注意:如果使用的thymeleaf模板引擎的話,那么需要這么進行編寫:

<link rel="stylesheet" th:href="${urls.getForLookupPath('/css/font.css')}" rel="external nofollow" >
<link rel="stylesheet" th:href="${urls.getForLookupPath('/css/xadmin.css')}" rel="external nofollow" >
<script th:src="${urls.getForLookupPath('/lib/layui/layui.js')}" charset="utf-8"></script>
<script type="text/javascript" th:src="${urls.getForLookupPath('/js/xadmin.js')}"></script>

SpringBoot開發(fā)中的一些小坑—CSS失效

Springboot版本1.5.17

結(jié)合thymeleaf,在項目中引用CSS文件的問題

	    <parent>
	        <groupId>org.springframework.boot</groupId>
	        <artifactId>spring-boot-starter-parent</artifactId>
	        <version>1.5.17.RELEASE</version>
	        <relativePath/> <!-- lookup parent from repository -->
	    </parent>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
<!DOCTYPE html >
<html  lang="zh-CN" xmlns:th="http://www.thymeleaf.org" >
<head>
    <meta charset="UTF-8" />
    <title>0.0</title>
    <link  rel="stylesheet" type="text/css"  href="../static/css/index.css" rel="external nofollow"  rel="external nofollow" >
</head>

首先配置的CSS引用是這樣,href后面跟上從static文件后的完整路徑,打開靜態(tài)網(wǎng)頁就是有css效果了

demo.CSS載入

沒有加載成功是這樣的

在這里插入圖片描述

但是問題來了,還有種說法是這樣加:

<link  rel="stylesheet" type="text/css"  href="../static/css/index.css" rel="external nofollow"  rel="external nofollow"  th:href="@{/css/index.css}" rel="external nofollow" >

而在靜態(tài)網(wǎng)頁中,你看到的,始終是帶上了CSS樣式的結(jié)果,但Springboot項目運行起來后,你會發(fā)現(xiàn)CSS加載失效了,所以如果是Springboot項目,一定要加上后面的路徑th:href=""。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring源碼完美導(dǎo)入IDEA的過程

    Spring源碼完美導(dǎo)入IDEA的過程

    正值春節(jié)假期,小伙伴私信我idea導(dǎo)入spring源碼的過程,今天抽空給大家整理一篇教程幫助大家學(xué)習(xí)Spring源碼完美導(dǎo)入IDEA的詳細(xì)過程,感興趣的朋友一起看看吧
    2022-02-02
  • Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法

    Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法

    今天小編就為大家分享一篇Java讀取一行空格隔開的數(shù)字字符串并求出這些數(shù)字的和方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • netty服務(wù)端處理請求聯(lián)合pipeline分析

    netty服務(wù)端處理請求聯(lián)合pipeline分析

    這篇文章主要為大家介紹了netty服務(wù)端處理請求聯(lián)合pipeline示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 淺析JVM逃逸的原理及分析

    淺析JVM逃逸的原理及分析

    在本篇文章里我們給大家分享了JVM逃逸的原理及分析的相關(guān)知識點內(nèi)容,需要的讀者們可以學(xué)習(xí)下。
    2018-10-10
  • java異常繼承何類,運行時異常與一般異常的區(qū)別(詳解)

    java異常繼承何類,運行時異常與一般異常的區(qū)別(詳解)

    下面小編就為大家?guī)硪黄猨ava異常繼承何類,運行時異常與一般異常的區(qū)別(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • java使用EasyExcel導(dǎo)出上萬數(shù)據(jù)如何避免OOM

    java使用EasyExcel導(dǎo)出上萬數(shù)據(jù)如何避免OOM

    本文主要介紹了使用EasyExcel導(dǎo)出大量數(shù)據(jù)時避免OOM問題的方法,通過分頁查詢和分批次寫入Excel,可以有效避免內(nèi)存溢出,并提供了一個封裝好的工具類,簡化了導(dǎo)出代碼的編寫
    2024-11-11
  • MyBatis入門介紹(超簡單)

    MyBatis入門介紹(超簡單)

    mybatis是Java的持久層框架, JAVA操作數(shù)據(jù)庫是通過jdbc來操作的,而mybatis是對jdbc的封裝。下文給大家介紹mybatis入門知識,感興趣的朋友參考下吧
    2017-08-08
  • 如何用Java實現(xiàn)排列組合算法

    如何用Java實現(xiàn)排列組合算法

    本文主要介紹了如何用Java實現(xiàn)排列組合算法,對算法感興趣的同學(xué),可以參考一下,理解其原理,并且試驗一下。
    2021-05-05
  • java 算法之希爾排序詳解及實現(xiàn)代碼

    java 算法之希爾排序詳解及實現(xiàn)代碼

    這篇文章主要介紹了java 算法之希爾排序詳解及實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • SpringBoot實現(xiàn)API接口多版本支持的示例代碼

    SpringBoot實現(xiàn)API接口多版本支持的示例代碼

    這篇文章主要介紹了SpringBoot實現(xiàn)API接口多版本支持的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

武胜县| 阿图什市| 南部县| 黑龙江省| 新化县| 牙克石市| 甘德县| 屏东市| 手机| 疏附县| 海门市| 闸北区| 义乌市| 莱芜市| 夏津县| 阳江市| 余姚市| 运城市| 云阳县| 延吉市| 台山市| 天津市| 萨迦县| 塔城市| 惠水县| 长海县| 新平| 安平县| 云浮市| 菏泽市| 宜章县| 冀州市| 内乡县| 陇川县| 卓尼县| 满城县| 乌拉特前旗| 库车县| 玉田县| 南投县| 太仓市|