Java web如何定位工程路徑
阿新 • • 發佈:2018-09-16
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如何定位工程路徑