`
yinlongfei
  • 浏览: 155452 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于serveletContext.getRealPath()获得应用绝对路径的问题

    博客分类:
  • java
阅读更多

request.getRealPath用于获取应用的绝对路径,但现在已经建议不要使用了。

由于在servlet中使用getServletContext.getRealPath()方法受到war 和non-war的影响,以及不同app server实现的影响,莫名地常常会得到null。

原因在于:对一个打包的应用来说,是没有RealPath的概念的,调用getRealPath只会简单地返回null。其实,也很好理解,一个文件被打包入了.war文件,就不存在目录结构了(虽然包中仍然存在目录结构,但这不等同于文件系统中的目录结构)。所以,对war包中的资源是无法得到RealPath的。这样也就无从通过文件IO进行读取了。
解决的方法如下:
使用servletContext.getResourceAsStream():

如获取war中的资源路径 servletContext.getResourceAsStream("/WEB-INF/resource/test.config")方法。

 

原则:基本上就是尽量使用j2ee规范中的各层次classloader来获取资源,而不是试图去找文件的绝对路

方法:调用this.getClass().getClassLoader().getResource("/").getPath(); 获取到classes目录的全路径

使用:在得到classes目录的全路径后再根据字符串的截取与拼装达到你的要求即可。

 

绝对不要使用ServletContext的getRealPath方法获取Web应用的路径!应该使用ServletContext的getResource()方法,直接使用相对于Web应用根目录的相对路径来获取资源。
 

 

 

分享到:
评论

相关推荐

    Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的区别.doc

    - **定义**:`getRealPath()`方法返回服务器上指定虚拟路径的真实物理路径。 - **应用场景**:通常用于访问Web应用程序目录下的文件系统,如读取配置文件或上传文件等场景。 - **示例**:在示例中,执行`System.out....

    java中相对路径与绝对路径的问题

    此外,我们还可以使用 `application.getRealPath(request.getRequestURI())` 来获取文档的绝对路径,使用 `application.getRealPath("/")` 来获取当前 web 实际运用的绝对路径。 4. Servlet 中获得当前实际运用的...

    java绝对路径和相对路径

    - 使用`ServletContext`对象的`getRealPath("/")`方法,同样可以获得Web应用的根目录的绝对路径。 - 示例:`E:\eclipseM9\workspace\tree\treeweb` #### 二、获取本地路径 在Java程序中,获取本地路径主要是指...

    Java开发绝对和相对路径问题

    可以使用 request.getRequestURI() 获取当前应用的相对路径,使用 application.getRealPath(request.getRequestURI()) 获取当前文件的绝对路径,使用 application.getRealPath("/") 获取当前 Web 应用的绝对路径。...

    java中相对路径,绝对路径问题总结.doc

    - Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` 总的来说,正确理解和使用Java中的相对路径和绝对路径是开发Web应用的基础,这有助于确保资源的正确访问,提高代码的可移植性和维护...

    Java相对路径绝对路径总结

    #### 三、JSP/Servlet中获得当前应用的相对路径和绝对路径 ##### 3.1 JSP中获得当前应用的相对路径和绝对路径 - **根目录所对应的绝对路径**: 可以通过`request.getRequestURI()`获取。 - **文件的绝对路径**: ...

    java开发中的路径问题

    - 在JSP中,可以使用`request.getRequestURI()`获取根目录对应的绝对路径,`application.getRealPath(request.getRequestURI())`获取文件的绝对路径,`application.getRealPath("/")`获取Web应用的绝对路径,`new ...

    绝对路径和相对路径

    ##### 3.2 Servlet中获得当前应用的相对路径和绝对路径 - **根目录所对应的绝对路径**:通过`request.getServletPath()`获取。 - **文件的绝对路径**:通过`request.getSession().getServletContext().getRealPath...

    java(Web)中相对路径,绝对路径问题总结

    ### Java(Web)中相对路径与绝对路径问题总结 #### 基本概念理解 在Java Web开发中,路径的概念非常重要,因为它们直接影响到资源的加载和处理。路径分为两种类型:绝对路径和相对路径。 **绝对路径**是指文件或...

    在JAVA文件中获取该项目的相对路径.doc

    3. 在 JSP/Servlet 中获得当前应用的相对路径和绝对路径 在 JSP 中,可以使用 request.getRequestURI() 获取当前文件的绝对路径,然后使用 application.getRealPath(request.getRequestURI()) 获取当前文件的绝对...

    得到文件真实路径

    - 当前Web应用的绝对路径:`servletConfig.getServletContext().getRealPath("/")` ServletContext对象可以通过以下方式获取: - `javax.servlet.http.HttpSession.getServletContext()` - `javax.servlet.jsp...

    java Web 中相对路径绝对路径问题总结

    以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与标准 #### 1. URL与URI URL(Uniform Resource Locator)统一资源定位符,是一种用于标识网络上资源位置的标准格式,如`...

    获取项目的相对路径和绝对路径

    正确地使用`request.getContextPath()`、`request.getServletPath()`、`request.getServletContext().getRealPath("/")`等方法可以帮助我们更好地管理Web应用中的文件路径问题。希望本文能对你有所帮助,在实际工作...

    JAVA获取各种路径总结

    - 如果你需要获取某个文件所在目录的上级目录,可以先通过`application.getRealPath(request.getRequestURI())`得到该文件的绝对路径,再使用`new File(...).getParent()`获取其上级目录。 2. **Servlet中获取路径...

    jsp_servlet路径问题

    - **当前Web应用的绝对路径**:`servletConfig.getServletContext().getRealPath("/")` - **ServletContext对象的获取**:可以通过多种方式获得,如`javax.servlet.http.HttpSession.getServletContext()`、`javax....

    Java相对路径与肯定路径的问题_.docx

    1. **Servlet中的`getRealPath()`**: 在Servlet中,可以使用`HttpServletRequest`或`ServletContext`的`getRealPath()`方法来获取绝对路径。例如: ```java String path = request.getServletContext()....

    java获取路径的各种方法

    本文主要介绍Java中获取路径的各种方法,包括绝对路径和相对路径的概念,以及在JSP和Servlet中的具体实现。 首先,理解基本概念: 1. **绝对路径**:绝对路径是指文件或目录在计算机硬盘上的完整路径,它提供了一...

    JAVA文件路径详细讲解[文].pdf

    - 当前Web应用绝对路径:`servletConfig.getServletContext().getRealPath("/")` 4. **最佳实践** - 避免使用`.`,`./`,`../../`等相对当前文件位置的路径,因为它们在文件移动时可能导致问题。 - 在引用CSS、...

Global site tag (gtag.js) - Google Analytics