java中如何獲取項目的路徑


 
記錄是為了更好的成長!
 

1、ssm項目中

以工程名為TEST為例: 

(1)得到包含工程名的當前頁面全路徑:request.getRequestURI() 
結果:/TEST/test.jsp 
(2)得到工程名:request.getContextPath() 
結果:/TEST 
(3)得到當前頁面所在目錄下全名稱:request.getServletPath() 
結果:如果頁面在jsp目錄下 /TEST/jsp/test.jsp 
(4)得到頁面所在服務器的全路徑:application.getRealPath("頁面.jsp") 
結果:D:\resin\webapps\TEST\test.jsp 
(5)得到頁面所在服務器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); 
結果:D:\resin\webapps\TEST 

2.在類中取得路徑: 

(1)類的絕對路徑:Class.class.getClass().getResource("/").getPath() 
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ 
(2)得到工程的路徑:System.getProperty("user.dir") 
結果:D:\TEST 

3.在Servlet中取得路徑: 

(1)得到工程目錄:request.getSession().getServletContext().getRealPath("") 參數可具體到包名。 
結果:E:\Tomcat\webapps\TEST 
(2)得到IE地址欄地址:request.getRequestURL() 
結果:http://localhost:8080/TEST/test 
(3)得到相對地址:request.getRequestURI() 
結果:/TEST/test
注釋:當項目中的jsp頁面有<base href="<%=request.getContextPath()%>/">標簽時,可以使用以下代碼來獲取根目錄,以防項目名為空的時候報錯:
 function getRootPath(){ 
return $("base").attr("href"); 
}  
var webpath=getRootPath(); //webpath就是目錄路徑變量 
 

2、springBoot項目中

  1、在用戶頭像上傳的功能實現時,為了獲取目錄路徑,花了好些時間,簡單記錄一下: 
String path = ClassUtils.getDefaultClassLoader().getResource("").getPath() //輸出path: D:/java_project/manage/target/classes/

  項目中圖片上傳的路徑是  resources/static/img/headImg/  中,路徑可以這樣寫:

String path = ClassUtils.getDefaultClassLoader().getResource("").getPath()+"static/img/headImg/";
//輸出path:/D:/java_project/manage/target/classes/static/img/headImg/

  2、還有一種寫法,效果一樣 

//獲取項目的根目錄
File path = new File(ResourceUtils.getURL("classpath:").getPath()); System.out.println("path:"+path.getAbsolutePath()); //path:D:\java_project\manage\target\classes
        
//獲取項目根目錄下的某個文件夾,這里是  "static/img/headImg/"
File uploadpath = new File(path.getAbsolutePath(),"static/img/headImg/"); System.out.println("uploadpath:"+uploadpath.getAbsolutePath()); //uploadpath:D:\java_project\manage\target\classes\static\img\headImg

//也可以直接寫成這樣
String path =
ResourceUtils.getURL("classpath:static/img/headImg/").getPath();
注意:ResourceUtils的這種寫法在linux系統是無效,請注意

推薦使用一下兩種方式:
String rootPath = Class.class.getClass().getResource("/").getPath();
//
D:\java_project\manage\target\classes\

String rootPath2 = ClassUtils.getDefaultClassLoader().getResource("").getPath();
//D:\java_project\manage\target\classes\

 

 
 
 
以上內容代表個人觀點,僅供參考,不喜勿噴。。。


免責聲明!

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



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