關於Java和web工程項目中各類路徑的獲取總結

     關於Java和web工程項目中各類路徑的獲取總結

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

相關文章
相關標籤/搜索