獲取JAVA[WEB]專案相關路徑的幾種方法
阿新 • • 發佈:2019-01-08
在jsp和class檔案中呼叫的相對路徑不同。 在jsp裡,根目錄是WebRoot 在class檔案中,根目錄是WebRoot/WEB-INF/classes 當然你也可以用System.getProperty("user.dir")獲取你工程的絕對路徑。
另:在Jsp,Servlet,Java中詳細獲得路徑的方法!
1.jsp中取得路徑:
以工程名為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)類的絕對路徑:String u=Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
//str會得到這個函式所在類的路徑
String str = u.toString();
//截去一些前面6個無用的字元
str=str.substring(6,str.length());
//將%20換成空格(如果資料夾的名稱帶有空格的話,會在取得的字串上變成%20)
str=str.replaceAll("%20", " ");
//查詢“WEB-INF”在該字串的位置
int num = str.indexOf("WEB-INF");
//擷取即可
str=str.substring(0, num+"WEB-INF".length());
(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