1. 獲取web服務器項目的真實物理路徑
request.getSession().getServletContext().getRealPath("/"); java
2. 相對路徑的得到
String relativelyPath=System.getProperty("user.dir"); web
上述相對路徑中,java項目中的文件是相對於項目的根目錄
web項目中的文件路徑視不一樣的web服務器不一樣而不一樣
(tomcat是相對於tomcat安裝目錄\bin) apache
3. 類加載目錄的得到 (即當運行時某一類時得到其裝載目錄)
3.1. 通用的方法一 (不管是通常的java項目仍是web項目,先定位到能看到包路徑的第一級目錄)
InputStream is=TestAction.class.getClassLoader().getResourceAsStream("test.txt");
(test.txt文件的路徑爲項目名\src\test.txt;類TestAction所在包的第一級目錄位於src目錄下)
上式中將TestAction,test.txt替換成對應成相應的類名和文件名字便可 tomcat
3.2. 通用方法二 (此方法和1.1中的方法相似,不一樣的是此方法必須以'/'開頭)
InputStream is=Test1.class.getResourceAsStream("/test.txt");
(test.txt文件的路徑爲項目名\src\test.txt,類Test1所在包的第一級目錄位於src目錄下) 服務器
4. web項目根目錄的得到(發佈以後)
4.1. 從servlet出發 ,可創建一個servlet在其的init方法中寫入以下語句
ServletContext s1=this.getServletContext();
String temp=s1.getRealPath("/");
結果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ (002_ext爲項目名字)
若是是調用了s1.getRealPath("")則輸出D:\工具\Tomcat-6.0\webapps\002_ext(少了一個"\") app
4.2. 從httpServletRequest出發
String cp11111=request.getSession().getServletContext().getRealPath("/");
結果形如:D:\工具\Tomcat-6.0\webapps\002_ext\ dom
5. classpath的獲取 (在Eclipse中爲得到src或者classes目錄的路徑)
5.1. 方法一
Thread.currentThread().getContextClassLoader().getResource("").getPath();
String t=Thread.currentThread().getContextClassLoader().getResource("").getPath();
System.out.println("t---"+t);
輸出:t---/E:/order/002_ext/WebRoot/WEB-INF/classes/ webapp
5.2. 方法二
JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse爲src某一個包中的類,下同)
String p1=JdomParse.class.getClassLoader().getResource("").getPath();
System.out.println("JdomParse.class.getClassLoader().getResource--"+p1);
輸出:
JdomParse.class.getClassLoader().getResource--/E:/order/002_ext/WebRoot/WEB-INF/classes/
另外,若是想把文件放在某一包中,則能夠經過如下方式得到到文件(先定位到該包的最後一級目錄) jsp
String p2=JdomParse.class.getResource("").getPath();
System.out.println("JdomParse.class.getResource---"+p2);
輸出:
JdomParse.class.getResource---/E:/order/002_ext/WebRoot/WEB-INF/classes/jdom/
(JdomParse爲src目錄下jdom包中的類)
在jsp和class文件中調用的相對路徑不一樣。 在jsp裏,根目錄是WebRoot 在class文件中,根目錄是WebRoot/WEB-INF/classes工具
固然你也能夠用System.getProperty("user.dir")獲取你工程的絕對路徑。
6. 在Jsp,Servlet,Java中詳細得到路徑的方法
6.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
6.2. 在類中取得路徑:
(1)類的絕對路徑:Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
(2)獲得工程的路徑:
System.getProperty("user.dir")
結果:D:\TEST
6.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
示例:
以工程名爲/DemoWeb爲例:
訪問的jsp爲:http://localhost:8080/DemoWeb/test/index.jsp
1 JSP中得到當前應用的相對路徑和絕對路徑
(1)獲得工程名:request.getContextPath()
結果:/DemoWeb
(2)獲得包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/DemoWeb/test/testpath.jsp
(3)獲得IE地址欄地址:request.getRequestURL()
結果:http://localhost:8080/DemoWeb/test/testpath.jsp
(4)獲得當前頁面所在目錄下全名稱:request.getServletPath()
結果:/test/testpath.jsp
(5)獲得頁面所在服務器的全路徑(實際的路徑):application.getRealPath("testpath.jsp")
結果:D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15\webapps\DemoWeb\testpath.jsp
D:\Develop Files\apache-tomcat-5.5.15\apache-tomcat-5.5.15爲tomcat的安裝路徑
(6)獲得訪問url後面的參數串
String queryString = request.getQueryString();
結果:name=zhangsan&age=10
2.java 的Class中得到相對路徑,絕對路徑的方法
(1)類的絕對路徑:
System.out.println(TestPath.class.getResource("/").getPath());
結果:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/
System.out.println(TestPath.class.getResource(""));
結果:file:/E:/workspace/workspace_tcc/DemoWeb/WebRoot/WEB-INF/classes/demo1/
(2)獲得工程的路徑:System.getProperty("user.dir")