• 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: esinwebapps ewsmainlist.jsp

    (7) 得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent();
    结果:D: esinwebapps ews

    三、在类中取得路径

    (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:Tomcatwebapps ews

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

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

  • 相关阅读:
    Windowsforms 中对文件操作
    ADO.net增删改的使用
    ADO.net数据访问
    可空类型
    FineUI 页面跳转
    ASP.NET页面之间传递值的几种方式
    C# Find() 与 FindAll()方法的使用
    在Sql中将 varchar 值 '1,2,3,4,5,6' 转换成数据类型 int
    DataSet、DataTable、DataRow、DataColumn区别及使用实例
    C#中如何排除/过滤/清空/删除掉字符串数组中的空字符串
  • 原文地址:https://www.cnblogs.com/shawWey/p/6897377.html
Copyright © 2020-2023  润新知