1. 程式人生 > >獲取JAVA[WEB]專案相關路徑的幾種方法

獲取JAVA[WEB]專案相關路徑的幾種方法

在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