在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.35\webapps\MyPath\jsp\pathpage.jsp
(5)得到页面所在服务器的绝对路径:String absPath = new
java.io.File(application.getRealPath(request.getServletPath())).getParent();
结果:F:\apache-tomcat-6.0.35\webapps\MyPath\jsp
(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:\WorkSpace\MyPath

(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.35\webapps\MyPath
(2)得到IE地址栏地址:request.getRequestURL()

结果:http://localhost:8080/MyPath/jsp
(3)得到相对地址:request.getRequestURI()
结果:/MyPath/jsp

获取JAVA[WEB]项目相关路径的几种方法的更多相关文章

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

    http://blog.csdn.net/yaerfeng/article/details/7297479/ 在jsp和class文件中调用的相对路径不同. 在jsp里,根目录是WebRoot 在cl ...

  2. 对Java Web项目中路径的理解

    第一个:文件分隔符 坑比Window.window分隔符 用\;unix采用/.于是用File.separator来跨平台 请注意:这是文件路径.在File f = new File(“c:\\hah ...

  3. java中获取类加载路径和项目根路径的5种方法

    import java.io.File; import java.io.IOException; import java.net.URL; public class MyUrlDemo { publi ...

  4. web项目docker化的两种方法

    标题所讲的两种方法其实就是创建docker镜像的两种方法 第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可 第二种:编写dockerfile,将需要的镜像 ...

  5. java获取类加载路径和项目根路径的5种方法

    // 第一种:获取类加载的根路径 D:\IDEAWorkspace\hs-bluetooth-lock\src\applications\bluetooth-api\target\classes Fi ...

  6. 获取SilverLight.Web项目中路径Uri

    方法一: //获取指定要呈现的xaml内容的包活xaml文件Uri var strFullUrl = Application.Current.Host.Source.AbsoluteUri; if ( ...

  7. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

  8. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  9. 【转】Java Web 项目获取运行时路径 classpath

    Java Web 项目获取运行时路径 classpath 假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么ja ...

随机推荐

  1. span标签设置margin-top没有效果

    <span>是行内元素,span只有margin-left和margin-right才有效果.要想margin-top生效就要把span转给块级元素才行.在span的css中加入以下属性即 ...

  2. windows 下面安装npm

    npm(简称:Node Packaged Modules)是nodejs官方未nodejs定制的一个工具,是Node.js的包管理器,通过npm可以下载安装nodejs的模块包,nodejs有很多优秀 ...

  3. git cherry-pick

    在不同的分支上merge是有点很危险的事情,尤其当两个分支内容差异较大的时候,而恰好,你想合并的就是几次commit而已,那么用cherry-pick吧. 将B分支的提交合并到A分支: git che ...

  4. vector使用篇之erase

    由于最近项目使用中发现了之前对vector的一个误区,由此发现自己对vect非常不了解,对此进行了一些了解,由此打算写一下关于vector使用方面的注意点,本篇先来讲一下vector的erase功能, ...

  5. iOS9 URL Schema 白名单 微信

    近期苹果公司iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装. 受此影响,当你的应用在 ...

  6. css兼容问题

    Opacity的兼容处理          filter:alpha(opacity=100); /* IE */        opacity: 0.5; /* 支持opacity的浏览器*/

  7. phpstorm version 2016.2 License Server激活

    phpstorm version 2016.2 License Server激活 安装后,在激活的时候选择 license server; 输入如下地址激活: http://jetbrains.ten ...

  8. 【jq】c#零基础学习之路(2)循环和分支

    一.循环语句 1).do { //循环体,先运行一次. } while (true); 2). while (true) { //循环体 } 3). for (int i = 0; i < le ...

  9. js/css在html文档中的引用外部文件方式对比

    包含css样式表和js脚本的最好方式是使用外部文件,因为css/js和html标记文档可以清晰地分离. css的外部引用写在<head></head>中: <head&g ...

  10. REGEX.C GNU 提取过滤数据

    今天被@SVCHAO  勾起兴趣来了.. 有把正则表达式兴趣捡起来了,试了下notepad++基本上语法倒是没有忘记,不过如果是用在嵌入式的方案的话,似乎还是有点费劲的. 先mark一个基础语法. 单 ...