天天看點

擷取Web工程的實體路徑

   java 擷取Web項目的實體路徑,以前也用過不過忘了,現在寫在這裡記錄下免得以後忘了好找,哈哈...

方法有好多種,以下第一種,是我用過的且通過了。

package test;
public class Path {
 /**
  * @param args
  */
 void printpath(){
         String path=this.getClass().getResource("/").getPath();//得到d:/tomcat/webapps/工程名WEB-INF/classes/路徑
          path=path.substring(1, path.indexOf("WEB-INF/classes"));//從路徑字元串中取出工程路勁
         System.out.println(path);
 }
 public static void main(String[] args) {
          Path p=new Path();
          p.printpath();
 }
}      

注意:在jsp頁面中同樣可以使用

輸出:d:/tomcat/webapps/工程名/

以下的與這相關的參考:

public class CreateXmlAction extends HttpServlet {
    private ServletConfig config;
     public void init(ServletConfig config) throws ServletException {
         this.config = config;
     }   public void doPost(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      String   filePath = config.getServletContext().getRealPath("/");
    }}
或者直接在繼承了HttpServlet的Servlet中寫:
String   filePath=this.getServletConfig().getServletContext().getRealPath("/");      
Class   clazz   =   test.Test.class;   
  String   name   =   clazz.getName().replace('.',   '/');   
  URL   url   =   Thread.currentThread().getContextClassLoader().getResource(name);   
    
  這個時候會得到"file:/D:/java/test/Test.class"這樣的url,你隻要去掉file:/即可      
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"));
 }
}