假定你的web application 名称为news,你在浏览器中输入请求路径:
http://localhost:8080/news/main/list.jsp
则执行下面向行代码后打印出如下结果:
1、 System.out.println(request.getContextPath()); 打印结果:/news
2、 System.out.println(request.getServletPath()); 打印结果: /main/list.jsp
3、 System.out.println(request.getRequestURI()); 打印结果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/")); 打印结果: F:\Tomcat 6.0\webapps\news\test
路径问题
3.1 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getRequestURI()
文件的绝对路径 :application.getRealPath(request.getRequestURI());
当前web应用的绝对路径 :application.getRealPath("/");
取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
3.2 Servlet中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:request.getServletPath();
文件的绝对路径 :request.getSession().getServletContext().getRealPath
(request.getRequestURI())
当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
(ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext()
javax.servlet.jsp.PageContext.getServletContext()
javax.servlet.ServletConfig.getServletContext()
)
对于普通java类文件,可以这样获取绝对路径:
System.out.println(this.getClass().getClassLoader().getResource("").getPath());
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
System.out.println(this.getClass().getResource("").getPath());
System.out.println(this.getClass().getResource("/").getPath());
在windows下面,输出为
/C:/Users/~/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp117/wtpwebapps/hims_agcy/WEB-INF/classes/
/C:/Users/~/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp117/wtpwebapps/hims_agcy/WEB-INF/classes/
/C:/Users/~/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp117/wtpwebapps/hims_agcy/WEB-INF/classes/bgi/health/agcy/birth/service/impl/
/C:/Users/~/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp117/wtpwebapps/hims_agcy/WEB-INF/classes/
在linux下面输出为:
/website/webApplications/HIMS_Agcy3/ROOT/WEB-INF/classes/
/website/webApplications/HIMS_Agcy3/ROOT/WEB-INF/classes/
/website/webApplications/HIMS_Agcy3/ROOT/WEB-INF/classes/bgi/health/agcy/birth/service/impl/
/website/webApplications/HIMS_Agcy3/ROOT/WEB-INF/classes/
String rootDir = this.getClass().getClassLoader().getResource("").getPath();
由上面的比较可以知道,对于windows需要去掉最前面的“/”;
String osName = System.getProperty("os.name");
if(osName!=null && osName.toLowerCase().equals("window")){
rootDir = rootDir.substring(1, rootDir.length()); // 对于windows环境下,去掉前面多余的斜杠
}
ps:
PDFTmplConfiguration.class.getClassLoader().getResource("").getPath();
PDFTmplConfiguration.class.getClass().getResource("").getPath()
虽然上面两种方法编译不报错,但是第二行的写法可能在运行期间报错,因为并没有加载class!!!
所以尽量选择classloader 来获取路径!!!
2015年3月12日16:25:57 添加:
今天在jar包中读取资源,又遇到一堆路径问题,jar包中读取文件更变态,参考这篇 http://blog.csdn.net/withiter/article/details/11924095 要打成jar的项目 如果需要访问jar里面的文件,
看起来只能读流
==============================================================================
==============================================================================
==============================================================================
System.out.println("in = "+in);
InputStream in2 = WordUtil.class.getResourceAsStream("template.docx");
System.out.println("in2 = "+in2);
String templateFile1 = WordUtil.class.getClassLoader().getResource("")+"template.docx";
System.out.println("templateFile = "+templateFile1);
System.out.println("path1 = "+WordUtil.class.getResource("/"));
System.out.println("path2 = "+WordUtil.class.getResource(""));
System.out.println("path3 = "+Thread.currentThread().getContextClassLoader().getResource(""));
System.out.println("path4 = "+WordUtil.class.getClassLoader().getResource(""));
System.out.println("path5 = "+ClassLoader.getSystemResource(""));
System.out.println("path6 = "+WordUtil.class.getResource(""));
System.out.println("path7 = "+WordUtil.class.getResource("/"));//Class文件所在路径
System.out.println("path8 = "+System.getProperty("user.dir"));
in = java.io.BufferedInputStream@7901880a
in2 = null
templateFile =F:/workspace/education-web/target/classes/template.docx
path1 = file:/F:/workspace/education-web/target/classes/
path2 = file:/F:/workspace/education-web/target/classes/com/education/web/util/
path3 = file:/F:/workspace/education-web/target/classes/
path4 = file:/F:/workspace/education-web/target/classes/
path5 = null
path6 = file:/F:/workspace/education-web/target/classes/com/education/web/util/
path7 = file:/F:/workspace/education-web/target/classes/
path8 = F:\workspace\education-web
相关推荐
Java 获取当前路径 Java 获取当前路径是 Java 编程中一个常见的需求,下面我们将讨论如何在 Java 中获取当前路径。 方法一:使用 System.getProperty() 函数 使用 System.getProperty() 函数可以获取当前路径,该...
通过以上介绍,我们可以看到,在Java开发中,无论是Web开发还是普通的Java应用程序开发,获取路径都是一个非常重要且实用的功能。掌握这些方法,可以帮助开发者更好地管理项目中的文件路径,提高程序的灵活性和可...
Java 项目中获取路径详解 在 Java 项目中,获取路径是非常重要的,因为它关系到项目的正确运行。特别是在 Java Web 项目中,获取路径变得更加复杂。下面我们将详细讨论 Java 项目中获取路径的方法和注意事项。 ...
此方法返回类的资源路径,通常用于获取与类相关的资源文件,例如`/D:/TEST/WebRoot/WEB-INF/classes/pack/`,这在加载配置文件、模板等静态资源时非常有用。 #### (2) 获取工作目录路径:`System.getProperty("user...
### JAVA获取项目路径 在Java开发中,获取项目的路径是一个非常常见的需求,尤其是在处理文件读写、资源定位等场景时尤为重要。本文将详细介绍如何通过不同的方法来获取项目的各种路径,并结合示例代码进行说明。 ...
5. **检查路径有效性**: 在获取路径后,可能需要验证该路径是否实际存在,可以使用`Files.exists()`方法: ```java boolean isDesktopExist = Files.exists(desktopPath); ``` 6. **读取桌面文件**: 一旦有了...
### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...
java、servlet、jsp、class等等中如何获得所在的路径
在Java中,获取路径是操作文件和目录时的基本需求。正确地获取和使用路径对于文件的创建、读取、写入等操作至关重要。本篇总结将从多个角度介绍Java中获取路径的方法。 ### 1. 获取系统属性路径 Java提供了一种...
在Java编程中,获取JDK(Java ...总结一下,Java获取JDK路径的方法主要涉及读取环境变量和通过正则表达式匹配。在实际操作中,开发者需要根据具体系统环境和需求灵活处理,确保找到的路径是准确无误的JDK安装位置。
### 二、Java中获取路径的方法 #### 1. 使用`File`类 Java中的`File`类提供了丰富的API来处理文件和目录路径。例如,通过`this.getClass().getResource()`方法可以获取资源文件的路径。 ##### 示例代码: ```java ...
windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题
在Java编程中,获取路径是常见的操作,尤其在处理文件、资源或Web应用程序时。本文将详细介绍Java中获取路径的几种方法,以及相对路径和绝对路径的基本概念。 首先,理解绝对路径和相对路径的概念至关重要。绝对...
这段简单的JAVA代码可以获取到WINDOWS的系统目录和环境变量,在XP和WIN7下测试通过!
在 Java 中,获取同一路径下所有类及其方法是非常重要的,这样才能对权限进行控制。在本文中,我们将提供一种获取所有类及其方法的方法。 获取同一路径下所有类及其方法 在开发内部可视化系统的“系统功能-功能...
开发web工程时经常要获取工程的根目录,自己用Java实现的获取Tomcat下war包部署的Web工程根目录路径的方法,主要利用web工程默认的目录结构,此外也可以指定工程名称获取工程目录的绝对路径
1. **通过`HttpServletRequest`对象获取路径**: - 使用`request.getRealPath("/")`:这将返回Web应用的根目录的绝对路径。 - 示例:`C:\Program Files\Apache Software Foundation\Tomcat5.5\webapps\strutsTest`...
- 动态获取路径通常适用于运行时定位资源,而非编译时。 综上所述,通过结合`ClassLoader`、`getResource`和`File`等类,我们可以动态获取Java类的相对路径,实现对文件资源的有效管理。在实际应用中,可能还需要...
在Java编程语言中,获取路径是一项基础且重要的任务,它涉及到文件系统操作和资源定位。在Java中,路径处理主要由java.io和java.nio.file包中的类来支持。本篇文章将详细探讨Java中如何获取和操作路径。 首先,我们...