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

SpringBoot中配置Web靜態(tài)資源路徑的方法

 更新時間:2020年09月16日 09:57:39   作者:wangxin1949  
這篇文章主要介紹了SpringBoot中配置Web靜態(tài)資源路徑的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

介紹: 本文章主要針對web項(xiàng)目中的兩個問題進(jìn)行詳細(xì)解析介紹:1- 頁面跳轉(zhuǎn)404,即controller轉(zhuǎn)發(fā)無法跳轉(zhuǎn)頁面問題;2- 靜態(tài)資源文件路徑問題。

項(xiàng)目工具: Intelij Idea, JDK1.8, SpringBoot 2.1.3

正文:

準(zhǔn)備工作:通過Idea創(chuàng)建一個SpringBoot-web項(xiàng)目,此過程不做贅述,創(chuàng)建完成后項(xiàng)目結(jié)構(gòu)如下圖:

1- 創(chuàng)建一個controller代碼如下:

package com.example.webpractice.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class DemoController {

  @RequestMapping("demo")
  public String demo() {
    System.out.println("進(jìn)入controller中的demo方法!");
    /*注意:這里返回值有后綴名,如何省略后綴名后面有介紹*/
    return "myPage.html";
  }
}

2- 在 web-practice\src\main\resources\templates\路徑下創(chuàng)建html頁面,取名“myPage”,代碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>Welcome to myPage!</h1>
</body>
</html>

此時運(yùn)行項(xiàng)目,會發(fā)現(xiàn)報404問題,同時查看Idea控制臺,打印顯示進(jìn)入controller方法。

3- spring.resources.static-location登場

打開application.yml文件,進(jìn)行如下配置(默認(rèn)項(xiàng)目中配置文件為application.properties,修改后綴名即可,因我個人喜歡使用yml文件),重新運(yùn)行項(xiàng)目并訪問地址:localhost:8080/demo 會發(fā)現(xiàn)頁面跳轉(zhuǎn)成功。

spring:
 resources:
  static-locations: classpath:templates/

原因分析:spring.resources.static-location參數(shù)指定了Spring Boot-web項(xiàng)目中靜態(tài)文件存放地址,該參數(shù)默認(rèn)設(shè)置為:classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources,servlet context:/,可以發(fā)現(xiàn)這些地址中并沒有/templates這個地址。當(dāng)配置文件中配置此項(xiàng)后,默認(rèn)配置失效,使用自定義設(shè)置。這里涉及到兩個概念:

(1)classpath:  通俗來講classpath對應(yīng)的項(xiàng)目中:web-practice\src\main\resources 文件目錄。如:“classpath: templates/” 即是將resources目錄下的templates文件夾設(shè)置為靜態(tài)文件目錄。更深一步講classpath路徑為:文件編譯后在target/classes目錄下的文件。

(2) 靜態(tài)文件目錄:通俗理解為存放包括 :.html;.jsp;CSS;js;圖片;文本文件等類型文件的目錄。這些文件都可以通過瀏覽器url進(jìn)行訪問。同時controller中轉(zhuǎn)發(fā)的文件目錄也必須被設(shè)置為靜態(tài)文件目錄,這就是增加了該參數(shù)以后就可以正常訪問的原因。

4-  spring.mvc.view.prefix/suffix登場 

現(xiàn)在頁面已經(jīng)可以正常轉(zhuǎn)發(fā),我們有了新的想法,我希望在templates文件夾中創(chuàng)建一個html文件夾用于專門存放頁面文件,另外在每次使用controller進(jìn)行轉(zhuǎn)發(fā)是都要標(biāo)明后綴名.html,這很麻煩,有沒有統(tǒng)一處理的方案,答案當(dāng)然是有!

修改后項(xiàng)目結(jié)構(gòu)如下:

controller方法修改如下:

package com.example.webpractice.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class DemoController {

  @RequestMapping("demo")
  public String demo() {
    System.out.println("進(jìn)入controller中的demo方法!");
    //如果不在appliation.yml文件中添加前后綴信息,此處返回語句為
    //return "html/myPage.html"
    return "myPage";
  }
}

application.yml文件修改如下:

spring:
 resources:
  static-locations: classpath:templates/
 mvc:
  view:
   prefix: html/
   suffix: .html

 再次運(yùn)行項(xiàng)目即可。通過測試得知prefix/suffix是在controller返回語句前后添加前后綴信息。

5- 配置多個靜態(tài)文件路徑:當(dāng)我們在頁面中添加圖片,并且將圖片存放在resources/static/pic路徑下,如下圖所示:

修改myPage.html如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>Welcome to myPage!</h1>
  <img src="/pic/pig.jpg" height="1920" width="1080"/></body>
</html>

 之后重啟項(xiàng)目,會發(fā)現(xiàn)圖片并沒有成功加載!如下:

原因是之前我們配置的靜態(tài)文件目錄只包含classpath:templates/,static目錄還不是合法的存儲靜態(tài)文件目錄,我們只需要在后面追加上static目錄即可。修改application.yml文件如下:

spring:
 resources:
  static-locations: classpath:templates/,classpath:static/
 mvc:
  view:
   prefix: html/
   suffix: .html

修改后重啟項(xiàng)目刷新頁面,一切正常!

6- 關(guān)于spring.mvc.view.static-path-pattern

該參數(shù)用來規(guī)定訪問靜態(tài)文件的路徑格式,該參數(shù)默認(rèn)值為:“/**” 表示所有路徑,現(xiàn)將該參數(shù)修改為:“/static/**” 觀察現(xiàn)象

spring:
 resources:
  static-locations: classpath:templates/,classpath:static/
 mvc:
  view:
   prefix: html/
   suffix: .html
  static-path-pattern: /static/**

重啟項(xiàng)目,發(fā)現(xiàn)頁面不能加載404錯誤!

要解決該問題需要修改兩個地方:

(1) 修改spring.mvc.view.prefix參數(shù)值為:static/html/  ;該修改為了controller轉(zhuǎn)發(fā)時可以找到文件路徑;

(2)修改myPage頁面的圖片地址如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <h1>Welcome to myPage!</h1>
  <img src="/static/pic/pig.jpg" height="1920" width="1080"/></body>
</html>

原因分析:static-path-pattern規(guī)定的時訪問靜態(tài)頁面的路徑類型,這里規(guī)定訪問靜態(tài)頁面必須為:localhost:8080/static/***的方式才能訪問到靜態(tài)資源。static-path-pattern并不是規(guī)定實(shí)際的靜態(tài)文件訪問路徑,而是規(guī)定了一種url標(biāo)記,只有遵循該標(biāo)記的規(guī)則才能訪問靜態(tài)文件。

擴(kuò)展:

1- spring.resources.static-locations參數(shù)除了規(guī)定classpath:路徑下的文件目錄為靜態(tài)文件目錄,還可以規(guī)定項(xiàng)目以外的位置,如設(shè)置:E:/test文件夾目錄為靜態(tài)文件存儲目錄,如下:

spring:
 resources:
  static-locations: classpath:templates/,classpath:static/,file:E:/test

2- 頁面訪問過程如下:

瀏覽器發(fā)送請求,先匹配SpringMVC中RequestMapping列表,匹配到后根據(jù)controller返回值定位靜態(tài)資源目錄,并返回給客戶;如果RequestMapping中未匹配到,則判斷是不是靜態(tài)文件目錄,如果是的話直接到靜態(tài)文件目錄對應(yīng)路徑下查詢文件,查詢到返回,未查詢到不返回。

3- static-location配置的目錄列表都被視為根目錄,如果兩個目錄中相同文件目錄下存儲了同名同類型文件,返回在static-locations配置靠前的根目錄下的內(nèi)容。

4- static-path-pattern參數(shù)規(guī)定了靜態(tài)文件存儲路徑,在controller的RequestMapping中應(yīng)該避免設(shè)置該路徑相同的訪問路徑。

 到此這篇關(guān)于SpringBoot中配置Web靜態(tài)資源路徑的方法的文章就介紹到這了,更多相關(guān)SpringBoot配置Web靜態(tài)資源路徑內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java??常見位邏輯運(yùn)算符梳理

    java??常見位邏輯運(yùn)算符梳理

    這篇文章主要介紹了java常見位邏輯運(yùn)算符梳理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參一下下面文章詳細(xì)內(nèi)容
    2022-08-08
  • SpringBoot整合Groovy腳本實(shí)現(xiàn)動態(tài)編程詳解

    SpringBoot整合Groovy腳本實(shí)現(xiàn)動態(tài)編程詳解

    這篇文章主要為大家介紹了SpringBoot整合Groovy腳本實(shí)現(xiàn)動態(tài)編程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java中從JSON轉(zhuǎn)Java實(shí)體的多種方法詳解

    Java中從JSON轉(zhuǎn)Java實(shí)體的多種方法詳解

    在現(xiàn)在的日常開發(fā)中不管前端還是后端,JSON 格式的數(shù)據(jù)是用得比較多的,甚至可以說無處不在,這篇文章主要給大家介紹了關(guān)于Java中從JSON轉(zhuǎn)Java實(shí)體的多種方法,需要的朋友可以參考下
    2023-12-12
  • Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟

    Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟

    本文主要介紹了使用Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • maven環(huán)境變量配置講解

    maven環(huán)境變量配置講解

    這篇文章主要介紹了maven環(huán)境變量配置講解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 解決Jenkins集成SonarQube遇到的報錯問題

    解決Jenkins集成SonarQube遇到的報錯問題

    本文給大家分享Jenkins集成SonarQube遇到的報錯問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • 利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能

    利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能

    這篇文章主要介紹了利用Java的Struts框架實(shí)現(xiàn)電子郵件發(fā)送功能,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-12-12
  • Java利用POI實(shí)現(xiàn)導(dǎo)入導(dǎo)出Excel表格示例代碼

    Java利用POI實(shí)現(xiàn)導(dǎo)入導(dǎo)出Excel表格示例代碼

    最近工作中遇到一個需求,是需要導(dǎo)出數(shù)據(jù)到Excel表格里,所以寫個Demo測試一下,還是比較簡單的,現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • MyBatis中#{}和${}有哪些區(qū)別

    MyBatis中#{}和${}有哪些區(qū)別

    大家好,本篇文章主要講的是MyBatis中#{}和${}區(qū)別,感興趣的同學(xué)趕快來看一看,對你有幫助的話記得收藏一下,方向下次瀏覽
    2021-12-12
  • Java微信公眾平臺之自定義菜單

    Java微信公眾平臺之自定義菜單

    這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺之自定義菜單,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評論

项城市| 华安县| 密山市| 霸州市| 白玉县| 诸城市| 阿尔山市| 定安县| 安康市| 克山县| 高要市| 双流县| 韩城市| 博客| 闵行区| 星子县| 水富县| 阿瓦提县| 平潭县| 舞钢市| 武城县| 阳春市| 古丈县| 万宁市| 嵊州市| 厦门市| 安达市| 新巴尔虎右旗| 泽州县| 山东| 房产| 女性| 灵武市| 双桥区| 屏南县| 富川| 隆子县| 伊川县| 时尚| 阜宁县| 开远市|