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

根据操作系统设定不同路径。

 

posted @ 2017-05-31 09:07  shawWey  阅读(19399)  评论(1编辑  收藏  举报