转自 http://blog.csdn.net/starnight_cbj/archive/2009/03/25/4023422.aspx

一 JAVA 类中
1。取出指定所在类的路径

class A {
String getPath() {
     return this.getClass().getClassLoader().getSystemResource("A"). getPath();
    }
}

注,更方便的

class A {
String getPath() {
     return (A.class).getResource("").getPath();}
}

2。取出类ClassLoader的开始路径(执行路径)
//String preUri=this.getClass().getClassLoader( ).getResource(""). getPath();

比如WebApp的项目,以下的指令得出的结果就是

/D:/project/crFj163Web/web/exploded/WEB-INF/classes/

比如你是纯java的程序,就是你执行java指令的当前路径

3。取出jdk所在的bin目录

//得到当前用户路径,执行路径 System.getProperty(”user.dir”)

其中user.dir是一个参数,更多参数请看这里

二、jsp/servlet 中的取路径

以前我们常用getRealPath(),不过这个方法已经不推荐用了。但我们可以使用request.getContextPath().另外还 有request.getRequestURL() 或者request.getRequestURI()。下面举例,以建立一个app1的webapp为例

1。request.getContextPath()打印出来的是

/app1

2。request.getRequestURL() 打印出来的是

http://localhost:8080/app1/index.jsp

3。request.getRequestURI() 打印出来的是

/app1/index.jsp


绝对路径: 磁盘路径,比如在eclipse中直接访问磁盘路径:d:/eclipse/webroot/index.jsp

相对路径: 项目为根目录,相对的路径,只需要指明根目录下的路径(即:tomcat部署的项目)。如想在webroot路径下的user包中的list。jsp文件(/user/list.jsp),在跳到webroot下的index。jsp文件。直接写/index.jsp即可。

模糊路径: classpath*:***

(Mr。xu 建议,底层为1层,项目名为最高层。而域名,一级二级相反。别人讲时,一定要记清。了解是哪里就是了)

最好使用相对于项目根目录的绝对路径:

正常的情况下是:不管你把JSP放到哪里,都可以指向servlet
作为一个程序员 ,我给你一个建议,
你提交的目录,最好使用相对于项目根目录的绝对路径。这样肯定没有问题。

项目名为ABC,根URL为/ABC
那么提交的时候,form的action里就写/ABC/servlet
不要写成servlet或者/servlet
同样,servlet跳转会jsp的时候,也要写/ABC/jsp/Login.jsp
(假设你的jsp放在根目录的jsp文件夹下。)

这样不管你的jsp放到哪里都是可以的。

dispatcher的forward和response.sendRirect。 他们都用来跳转jsp和servlet。但他们是不同的。
不同点在于
1:sendRirect是重定向,这时候 ,上一个request带过来的参数会全部丢失。如要在请求里加新的参数,请在url后面跟上参数。例如response.sendRirect("/ABC/jsp/login.jsp?name="+name);
forward是跳转,参数还保留在request里。

2:sendRirect的根路径是相对于服务器而言,假设你的服务器根路径是http://localhost:8080/
那么response.sendRirect("/ABC/jsp/login.jsp?");
就相当于跳到http://localhost:8080/ABC/jsp/login.jsp

forward的根路径是相对于项目的根路径而言
resquest.getRequestDispatcher("/ABC/jsp/login.jsp");
相当于跳到http://localhost:8080/ABC/ABC/jsp/login.jsp
注意,路径出错了,所以应该这样写
resquest.getRequestDispatcher("/jsp/login.jsp");
相当于跳到http://localhost:8080/ABC/jsp/login.jsp

顺带一提:<a href="/ABC/jsp/login.jsp">登录</a>
<form action="/ABC/servlet/login">
这些链接跟sendRirect是一样的,根路径是服务器的根路径。
我认为你的错,就是错在没有理解这些路径的区别。


转载:

http://blog.csdn.net/oanqoanq/archive/2009/03/13/3986770.aspx

读取配制文件的时候,路径问题让人挠头,使用下面的方法,可方便获取classpath绝对路径:
Thread.currentThread().getContextClassLoader().getResource("").getPath();

测试了一下,我在Eclipse下的java project 和 web project 的src 目录下都放有相同内容的一个MailInfo.properties文件,两个工程都有执行读取properties文件,进行发邮件的动作(java project 和 web project 都使用了这个方法获取classpath路径),都成功通过,主要代码如下:

...
Properties props = new Properties();
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
try 
{
 props.load(new FileInputStream(path+"/MailInfo.properties"));
} catch (FileNotFoundException e) 
{
 e.printStackTrace();
} catch (IOException e) 
{
 e.printStackTrace();

String stmp = props.getProperty("stmp"); 
String mymail = props.getProperty("email");
String mailuser = props.getProperty("user");
String mailpassword = props.getProperty("password");
...

另,打印了两个工程获取到的path的值,分别是:
/F:/workspace/CodeTest/bin/

---------java project

/F:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/webapps/pboc2web/WEB-INF/classes/        ---------web project


自己遇到的问题,可以右键myeclipse,explorer,打开本地文件夹,可以看到tomcat的class路径,比如配置文件,此路径经常在部署项目后正确。而在用junit测试webproject时,路径不清楚,可以采用“classpath*:***”。当确定配置修改正确后,可以单击window--》show view--》navigator,可以看到WEB-INF包下出现classes包,下面就是tomcat中部署的项目目录。

项目之相对路径、绝对路径, 路径问题相关推荐

  1. th:text为null报错_小猿圈web前端之vue-cli项目打包完成后运行文件路径报错问题

    学习前端的小伙伴越来越多,问题也就越多,前面基础部分还好一些,特别是一到框架的时候,难住了一大部分人,今天小猿圈web前端讲师就为大家总结了vue-cli项目打包完成后运行文件路径报错问题,有兴趣的小 ...

  2. web项目的中绝对路径和相对路径

    在做JavaWeb项目,总是出现各种的路径错误,而且发现不同情况下 /  所代表的含义不同. 绝对路径: 相对于当前Web应用根路径的路径 也就是任何路径都必须要带上contextPath = htt ...

  3. 如何修改myeclipse中web项目的工作路径或默认路径

    如何修改myeclipse中web项目的工作路径或默认路径 博客分类: J2EE开发技术指南 安装好myeclipse后,第一次启动myeclipse时,都会弹出会弹出Workspace Launch ...

  4. 【音视频安卓开发 (一)】AndroidStudio项目配置权限、jni库路径、ABI、Cmake

    cmake项目配置 # For more information about using CMake with Android Studio, read the # documentation: ht ...

  5. SpringBoot部署项目到Linux上传文件路径问题

    SpringBoot部署项目到Linux上传文件路径问题 使用项目相对路径上传到话会上传到linux服务器到/tmp 临时文件目录中,但是问题是还会报异常 Caused by: java.io.Fil ...

  6. WEB项目的相对路径与绝对路径

    1 与路径相关的操作 l  超链接 l  表单 l  转发 l  包含 l  重定向 l  <url-pattern> l  ServletContext获取资源 l  Class获取资源 ...

  7. javaweb项目相对路径与绝对路径

    在学习javaweb项目相对路径与绝对路径之前,我们要搞清楚java程序在运行时是怎么跑的. 我们平时写的代码统称java文件,也就是源文件,而.class文件是虚拟机编译得到的,虚拟机需要把我们写的 ...

  8. Python项目打包后找不到路径问题,将资源文件数据文件打包到exe文件中

    目录 问题描述 Python项目打包后,找不到配置文件路径 1.冻结路径 2.使用方法 将资源文件打包到exe文件中 1.打包前准备 2.返回临时路径 3.使用方法 4.编译打包 问题描述 pyins ...

  9. 关于在react项目中img标签src的路径问题

    关于在react项目中img标签src的路径问题 ​ 公司要求开发一个静态页面,那这当然需要用img标签放些图片作为背景.之前我的做法是把images这个文件夹放在站点的子目录里面,然后通过站点ip加 ...

最新文章

  1. 自动化运维工具Ansible
  2. SqlServer表死锁的解决方法
  3. java 设计原则_【无尽的编程之路】(java)-设计模式六大原则
  4. (六)构建Docker私有仓库、Gitlab仓库和持续集成环境
  5. 自学Python六 爬虫基础必不可少的正则
  6. spring boot filter配置方式
  7. 【C++深度剖析教程39】实现C++数组类模板
  8. 小熊的人生回忆(一)
  9. 物体重心的特点是什么_从重心变化看熊晃动作的学练要点
  10. 华为鸿蒙os2.0公测结果,网友收到华为鸿蒙 OS 2.0 手机开发者 Beta 公测邮件
  11. Java8 改进的匿名内部类:
  12. ScalaReact式编程书
  13. 浅谈 iOS设计之多视图—模态视图的基本操作
  14. python 消息中间件_如何评价腾讯开源的消息中间件TubeMQ?
  15. 奇妙的数字 小明发现了一个奇妙的数字。它的平方和立方正好把0~9的10个数字每个用且只用了一次。你能猜出这个数字是多少吗?
  16. 仿站王者:Teleport Ultra
  17. QTableWidget 设置表头颜色
  18. 《基于小型训练集的深度学习迁移的食用毒蘑菇机器视觉识别系统》论文笔记
  19. 【英语演讲】Simulation Test 模拟测试
  20. 我的理想计算机作文300字,我的理想作文300字(精选12篇)

热门文章

  1. APT攻击 --- 个人理解,仅供参考
  2. 通过Maven快速搭建Spring Boot父工程
  3. on1 effects 2021(照片滤镜调色软件) v15.0.1.9783
  4. 笔记本是一种小型计算机,小型台式电脑哪种好
  5. 计算机不识别u盘 批处理文件,U盘格式的秘密你懂么?不格式化转化U盘格式!.bat小工具-批处理文件格式...
  6. 行业分析-全球与中国SIM卡托市场现状及未来发展趋势
  7. 前端——CSS如何使文字居中
  8. excel smart流程图增加_用 SmartArt 轻松制作流程图,搞定 Office 多图排版
  9. IoT-For-Beginners-Lesson1-getting-started
  10. P2E游戏Blast Royale,区块链版《绝地求生》