Tomcat 專案的絕對路徑問題

2021-08-30 09:42:37 字數 785 閱讀 7098

tomcat環境下,在乙個service層中讀取檔案使用"/projectname/userfiles/image/*.jpg「的相對路徑,讀取的不是當前應用程式的當前路徑,而是直接調到/home/tomcat-6.0.18/bin下,不解,雖然寫絕對路徑不影響程式現在的執行,但是程式卻沒有辦法移植了!!

查了一下原因

war包只是部署到伺服器的乙個子過程,整個tomcat的web應用只有乙個入口那就是main的入口,那麼啟動tomcat的main類的路徑就是所謂的當前可執行路徑也就是/home/tomcat-6.0.18/bin下,如果想把配置放到war下,那麼就要考慮war/web-inf/classes/和war/web-inf/lib,tomcat針對你的war應用啟動了對應的classload,可以合理的把上述路徑作為classpath路徑,當然也包括tomcat_home/common/lib和tomcat_home/common/classes,所以你把配置檔案放到war/web-inf/classes/下,或者打到乙個jar包的根下放到war/web-inf/lib中,使用"/projectname/userfiles/image/*.jpg"的方式,就會直接以流的形式讀出!這個比較適合讀取配置檔案的情況!

如果讀取的檔案是不固定的可以在action處通過

servletcontext sc = getservletcontext();

string path=sc.getrealpath("相對路徑");

file file=new file(path);//獲取的是正確的絕對路徑了

springboot 獲取專案的絕對路徑

新建springboot 專案,專案名為fileupload system.getproperty user.dir 輸出目錄 f fileupload fileupload 獲取classes目錄絕對路徑 方式一 string path classutils.getdefaultclassload...

JSP中獲取專案的絕對路徑

在jsp中我們表示絕對路徑可以使用el表示式 這種方式是呼叫隱式的pagecontext物件,然後在得到httpservletrequest物件,最後再拿到contextpath。該方式是以屬性的形式出現。同樣可以採用jsp的形式來表示 request.getcontextpath 該方式呼叫的js...

springboot獲取專案的絕對路徑和根目錄

harvey 5月前 11142 閱讀 springboot獲取當前專案路徑的位址 system.getproperty user.dir 輸出目錄 g outshine wangsoso 獲取classes目錄絕對路徑 string path classutils.getdefaultclassl...