1. 程式人生 > >java中獲取各種上下文路徑的方法小結

java中獲取各種上下文路徑的方法小結

取出 resin pri nbsp ont row span user ade

一、獲得都是當前運行文件在服務器上的絕對路徑
在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中獲取各種上下文路徑的方法小結