前台顯示本地圖片


原因分析和解決思路

為什么在模板引擎(JSP,ThemyLeaf等等)上不能正常顯示本地圖片?

  因為在模板引擎中,你輸入的路徑名都會在前面默認加上項目路徑(localHost:8080/XXX),導致路徑錯誤

  比如你輸入的是:C:/test/test1.jpg

  但實際的路徑會變成 : localHost:8080/項目名/C:/test/test1.jpg

解決思路

  使用映射路徑,自己定義一個路徑,把該路徑映射到電腦本地路徑

SpringBoot+ThymeLeaf顯示本地圖片

在application.properties中添加路徑的映射

例子:

com.jy.localFile=C:/project_image/test/
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/\
, classpath:/static/, classpath:/public/, file:${com.jy.localFile}

就這么簡單

com.jy.localFile :

  自定義屬性

spring.mvc.static-path-pattern :

  就是springMVC配置前端處理器時的那個<url-pattern>.默認的就是/**,所以此處不寫static-path-pattern也沒問題

spring.resources.static-locations :

  1).映射的路徑, ${com.jy.localFile}前邊的那一大串都是SpringBoot默認的配置,必須寫上,否則默認配置會被覆蓋而失效!

  2).本地磁盤路徑前必須加上file: , 表示是指一個具體的硬盤路徑, 其他的使用classpath指的是系統環境變量

注意 : 1.修改默認配置的時候會把默認配置直接覆蓋,所以在修改時要加上默認配置的內容

   2.properties文件中反斜杠(\)表示連接

前台ThymeLeaf獲取本地圖片

  th:src="@{/{imageName}(imageName=${session.user.imageName})}"

  用傳參的方式避免把${session.user.imageName})原文填入

jsp顯示本地圖片

通用解決方法:

  在tomcat的server.xml配置文件中,在<host></host>標簽中間添上一句

    

<!-- docBase : 磁盤絕對路徑,即本地圖片存放地址 -->
<!-- path : 虛擬路徑, testProject是項目名 -->
<!-- reloadable : 有文件更新時,是否重新加載 -->
<Context docBase="C:\project_image\testProject" path="/testProject/upload" reloadable="true"/>

  注 : 為什么path="/testProject/upload"而不是path="/upload"?(testProject是項目名)

      比如項目地址是 : localhost:8081/testProject

      如果設置為path="/upload",那么圖片讀取的地址會變為 : localhost:8081/upload/photo.jpg,這個錯誤地址是讀取不到圖片的,連項目都進不去.

      如果path="/testProject/upload",則圖片讀取地址為 : localhost:8081/testProject/upload/photo.jpg,這樣才能讀取到圖片.

  jsp加載圖片代碼:

      <img src="${pageContext.request.contextPath }/testProject/photo.jpg">

 

eclipse配置方法:

  eclipse可以不用上邊的配置方法,直接在eclipse內配置即可.

  如下圖,進入Add External Web Module界面,按照上邊設置對應的docBase和path即可.

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM