java中獲取各種上下文路徑的方法小結
一、獲得都是當前運行文件在服務器上的絕對路徑
在servlet裏用:
this.getServletContext().getRealPath();
在struts用:
this.getServlet().getServletContext().getRealPath();
在Action裏用:
ServletActionContext.getRequest().getRealPath();
以上三個獲得都是當前運行文件在服務器上的絕對路徑
其實:
request.getRealPath("url"); // 虛擬目錄映射為實際目錄
request.getRealPath() 這個方法已經不推薦使用了,代替方法是:
request.getSession().getServletContext().getRealPath();
二、request獲取各種路徑總結
request.getRealPath("url"); // 虛擬目錄映射為實際目錄
request.getRealPath("./"); // 網頁所在的目錄
request.getRealPath("../"); // 網頁所在目錄的上一層目錄
request.getContextPath(); // 應用的web目錄的名稱
如http://localhost:7001/bookStore/
/bookStore/ => [contextPath] (request.getContextPath())
獲取Web項目的全路徑
String strDirPath =request.getSession().getServletContext().getRealPath("/");
以工程名為news為例: http://localhost:8080/news/main/list.jsp
(1) 得到包含工程名的當前頁面全路徑:request.getRequestURI()
結果:/news/main/list.jsp
(2) 得到工程名:request.getContextPath()
結果:/news
(3) 得到當前頁面所在目錄下全名稱:request.getServletPath()
結果:如果頁面在jsp目錄下 /main/list.jsp
(4) 得到IE地址欄地址:request.getRequestURL()
結果:http://localhost:8080/news/main/list.jsp
(5) 得到相對地址:request.getRequestURI()
結果:/news/main/list.jsp
(6) 得到頁面所在服務器的全路徑:application.getRealPath("頁面.jsp")
結果:D:\resin\webapps\news\main\list.jsp
(7) 得到頁面所在服務器的絕對路徑:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
結果:D:\resin\webapps\news
三、在類中取得路徑
(1) 類的絕對路徑:Class.class.getClass().getResource("/").getPath()
結果:/D:/TEST/WebRoot/WEB-INF/classes/pack/
例如:
String path=this.getClass().getResource("/").getPath();//得到d:/tomcat/webapps/工程名WEB-INF/classes/路徑
path=path.substring(1, path.indexOf("WEB-INF/classes"));//從路徑字符串中取出工程路徑
(2) 得到工程的路徑:System.getProperty("user.dir")
結果:D:\TEST
四、在Servlet中取得路徑
(1) 得到工程目錄:request.getSession().getServletContext().getRealPath("") 參數可具體到包名。
結果:E:\Tomcat\webapps\news
import java.io.File;
public class Test {
public static void main(String[] args) throws Exception {
System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println(Test.class.getClassLoader().getResource(""));
System.out.println(ClassLoader.getSystemResource(""));
System.out.println(Test.class.getResource(""));
System.out.println(Test.class.getResource("/")); //Class文件所在路徑
System.out.println(new File("/").getAbsolutePath());
System.out.println(System.getProperty("user.dir"));
}
}
java中獲取各種上下文路徑的方法小結