日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

由web项目中上传图片所引出的路径问题

發(fā)布時(shí)間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 由web项目中上传图片所引出的路径问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我在做javaweb項(xiàng)目的時(shí)候,有個(gè)項(xiàng)目中需要進(jìn)行圖片的上傳,有次我重新部署項(xiàng)目后,發(fā)現(xiàn)之前上傳的圖片不見(jiàn)了,最后找出原因:圖片上傳在服務(wù)器目錄上,而不是絕對(duì)路徑,所以特別想弄清楚javaweb項(xiàng)目中有關(guān)路徑的一些問(wèn)題。


首先,在做項(xiàng)目的時(shí)候我們最好用相對(duì)路徑,如果寫(xiě)成絕對(duì)路徑,當(dāng)項(xiàng)目發(fā)布到其他環(huán)境時(shí),絕對(duì)路徑就錯(cuò)了。


Java中傳統(tǒng)方式取資源時(shí),有很多的方法;


先來(lái)看一看Class.getResource(String path),

path 不以'/'開(kāi)頭時(shí),默認(rèn)是從此類(lèi)所在的包下取資源;

path ?以'/'開(kāi)頭時(shí),則是從ClassPath根下獲取,在這里就是相當(dāng)于項(xiàng)目的bin目錄(Eclipse環(huán)境下);

注意:Class.getResourceClass.getResourceAsStream(獲取資源流)在使用時(shí),路徑選擇上是一樣的。


再來(lái)看ClassLoader,即Class.getClassLoader().getResource(String path),

path不能以’/'開(kāi)頭, path是從ClassPath根下獲取,在這里就是相當(dāng)于項(xiàng)目的bin目錄(Eclipse環(huán)境下)

注意:Class.getClassLoader().getResourceClass.getClassLoader().getResourceAsStream在使用時(shí),路徑選擇上也是一樣的。


-----------------------------------------------------------------------------------------------------------------------------

手動(dòng)分割線

-----------------------------------------------------------------------------------------------------------------------------


注意哦,上面說(shuō)的是傳統(tǒng)方式獲取資源的方法,也就是在一般的java項(xiàng)目中,那么在web項(xiàng)目中呢?

在web工程中,一般來(lái)說(shuō),是不能采用傳統(tǒng)方式讀取資源的,因?yàn)橄鄬?duì)的是tomcat的bin目錄,這也就是為什么圖片上傳在服務(wù)器目錄上。


首先我們要先了解web中通過(guò)servletContext對(duì)象讀取資源文件,然后就好理解web工程中,不同位置的資源文件的讀取方式;

(在一個(gè)web工程中,只要涉及到寫(xiě)地址,建議最好以/開(kāi)頭)


第一點(diǎn):使用ServletContext的getRealPath(String path)方法,獲得文件的完整絕對(duì)路徑path,再使用字節(jié)流讀取path下的文件;

第二點(diǎn):使用ServletContext的getResourceAsStream(String path)方法:返回資源文件的讀取字節(jié)流;

第三點(diǎn):使用ServletContext的getResource(String path)方法,獲得一個(gè)url對(duì)象,調(diào)用該類(lèi)的openStream方法返回一個(gè)字節(jié)流,讀取數(shù)據(jù);

第四點(diǎn):還可以使用ServletContext的getResourcePaths(String Path)獲取指定目錄下所有資源路徑;


好了,了解了ServletContext,現(xiàn)在就能用它在web項(xiàng)目中進(jìn)行不同位置的資源文件的讀取了,用例子來(lái)說(shuō)明:

項(xiàng)目目錄:


tomcat中的此項(xiàng)目目錄:

miniblog目錄:


WEB-INF目錄:


classes目錄:



讀取jdbc.properties(當(dāng)資源文件在包下面時(shí)),

InputStream in =this.getServletContext().getResourceAsStream("/WEB-INF/classes/jdbc.properties");


讀取web.xml(資源文件在WEB-INF下),

InputStream in =this.getServletContext().getResourceAsStream("/WEB-INF/web.xml");


讀取adminuser.jsp(資源文件在web工程中),

InputStream in =this.getServletContext().getResourceAsStream("/adminjsps/adminuser.jsp");


好了,這些就是我了解到的了~


注意:普通java項(xiàng)目和javaweb項(xiàng)目所對(duì)應(yīng)的基本路徑是不一樣的,普通java項(xiàng)目對(duì)應(yīng)的是eclipse工作空間的某個(gè)項(xiàng)目的bin目錄,而javaweb項(xiàng)目則是tomcat的某個(gè)項(xiàng)目的根

目錄;所以,取路徑,取資源的方式都有所區(qū)別。

轉(zhuǎn)載于:https://www.cnblogs.com/Arry10/p/7731802.html

總結(jié)

以上是生活随笔為你收集整理的由web项目中上传图片所引出的路径问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。