• 获取JAVA[WEB]项目相关路径的几种方法


    在jsp和class文件中调用的相对路径不同。

    在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。
    如下为在Jsp,Servlet,Java中详细获得路径的方法!以Java Web工程名为MyPath为例:
    1.jsp中取得路径


    (1)得到包含工程名的当前页面全路径:request.getRequestURI();
    结果:/MyPath/jsp/pathpage.jsp
    (2)得到工程名:request.getContextPath();
    结果:/MyPath
    (3)得到当前页面所在目录下全名称:request.getServletPath();
    结果:如果页面在jsp目录下 /jsp/pathpage.jsp
    (4)得到页面所在服务器的全路径:application.getRealPath("jsp/pathpage.jsp");
    结果:F:apache-tomcat-6.0.35webappsMyPathjsppathpage.jsp
    (5)得到页面所在服务器的绝对路径:String absPath = new java.io.File(application.getRealPath(request.getServletPath())).getParent();
    结果:F:apache-tomcat-6.0.35webappsMyPathjsp
    (6)得到项目的访问路径:request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
    结果:http://localhost:8080/MyPath/


    2.在类中取得路径

    (1)得到class文件的存放路径:String path = Class.class.getClass().getResource("/").getPath();
    结果:/F:/WorkSpace/MyPath/WebRoot/WEB-INF/classes/

    //str会得到这个函数所在类的路径
    String str = path.toString();

    //截去一些前面1个无用的字符
    str = str.substring(1,str.length());

    //将%20换成空格(如果文件夹的名称带有空格的话,会在取得的字符串上变成%20)
    str = str.replaceAll("%20", " ");

    //查找"WEB-INF"在该字符串的位置
    int num = str.indexOf("WEB-INF");

    //截取即可
    str = str.substring(0, num+"WEB-INF".length());

    最后结果为:F:/WorkSpace/MyPath/WebRoot/WEB-INF

    (2)得到工程的路径:System.getProperty("user.dir");
    结果:F:WorkSpaceMyPath

    (3)得到class的绝对路径:PathJava.class.getClass().getResource("").getPath();
    结果:/F:/WorkSpace/MyPath/WebRoot/WEB-INF/classes/com/path/test/

    3.在Servlet中取得路径

    (1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。
    结果:F:apache-tomcat-6.0.35webappsMyPath
    (2)得到IE地址栏地址:request.getRequestURL()
    结果:http://localhost:8080/MyPath/jsp
    (3)得到相对地址:request.getRequestURI()
    结果:/MyPath/jsp

  • 相关阅读:
    vim编辑器经常使用命令
    @RequestMapping value 能够反复吗 [
    [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost
    leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
    烤羊肉串引来的思考——命令模式
    全面解析Activity的生命周期
    PHP与Linux进程间的通信
    模块管理常规功能自己定义系统的设计与实现(36--终级阶段 综合查询[3])
    小米与格力的10亿豪赌!
    《Java设计模式》之装饰模式
  • 原文地址:https://www.cnblogs.com/cnjavahome/p/4275249.html
Copyright © 2020-2023  润新知