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"));   } }

五、系統路徑說明: 

System.getProperty("user.dir")

如果是.bat或者.sh文件的話,那么該語句輸出的時候.bat或者.sh所在的文件路徑;

如果是weblogic服務器且由類輸出的話,該語句輸出的路徑是./startWebLogic.sh文件所在的路徑

        String osName = System.getProperties().getProperty("os.name");  
        if(osName.equals("Linux")){  
            System.setProperty("CPATH",System.getProperty("user.dir")+"/cssconfig.properties");
        }else{  
            System.setProperty("CPATH",System.getProperty("user.dir")+"\\cssconfig.properties");
        }

根據操作系統設定不同路徑。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM