1. 程式人生 > >Java web如何定位工程路徑

Java web如何定位工程路徑

net etc 建立 servlet real init eal prop context

一 項目路徑的獲得

System.getProperty("user.dir");

可以獲得當前用戶的工作目錄,即在哪個地方啟動的java程序,返回就是當前目錄

二 web項目根目錄的獲得(項目發布路徑)

從servlet出發 可建立一個servlet在其的init方法中寫入如下語句

ServletContext s1=this.getServletContext(); 
String path=s1.getRealPath("/");

path結果為:D:/workspace/Tomcat-8.0/webapps/test/ (test為項目名字) 如果是調用了s1.getRealPath("")則輸出D:/workspace/Tomcat-8.0/webapps/test/(少了一個"/")


從httpServletRequest出發,一般spring的Controler接口可以采取改方法

String path=request.getSession().getServletContext().getRealPath("/");

path結果為:D:/workspace/Tomcat-8.0/webapps/test/

在有的mac系統中獲取的地址都會帶有file,如==file:/private/var/folders/rc/fprxcv590blgzgvnxksmq3bh0000gn/T/tomcat-docbase.5005559936542573545.8080/==
如果用這個路勁去創建新的文件,則文件的路徑可能會跟你想象的不一樣,而是在當前路徑下創建了一個形如/file/private/var/folders/rc/fprxcv590blgzgvnxksmq3bh0000gn/T/tomcat-docbase.5005559936542573545.8080/...的文件夾

三 classpath的獲取

通過線程獲取

Thread.currentThread().getContextClassLoader().getResource("").getPath()

通過類加載器獲取

this.getClass().getClassLoader().getResource("").getPath();
//或者
ClassName.class.getClassLoader().getResource("").getPath();

這種方法都可以獲取到項目的classpath路徑,但是執行的類都必須是在src路徑下。因為設置Classpath的目的,是在於告訴Java執行環境,在哪些目錄下可以找到您所要執行的Java程序所需要的類或者包。
classpath具體介紹

Java web如何定位工程路徑