JavaWeb中读取文件资源的路径问题
来源:互联网 发布:form表单转json 编辑:程序博客网 时间:2024/06/07 20:28
一. java中使用的两种路径:绝对路径和相对路径
绝对路径:文件在硬盘中存放的实际路径
相对路径:在javaweb中是相对于整个web应用在硬盘上的路径来说的。例如:在Servlet中,”/”代表Web应用的根目录。
为了更好的维护项目,即使你的web应用换了服务器环境,只要你的文件在web应用中的相对路径不变,都能动态的获取文件在当前服务器环境的绝对文件路径。所以在编程时,只要想清楚所操作的文件是相对于什么路径下的,写出其相对路径就可以得到其绝对路径。
二. web应用中普通java类获取文件路径
方法1:ClassLoader.getResource(String path)
path为相对ClassPath的路径,从ClassPath根下获取,不能以“/”开头。
对于ClassPath:
WEB-INF/classes目录存放src目录java文件编译之后的class文件以及xml、properties等资源配置文件;
src不是classpath, WEB-INF/classes,lib才是classpath,因为类加载器是从这个目录下找.class文件来加载的。
方法2:Class.getResource(String path)
path不以”/”开头时,相对此类所在包的路径;
path以”/”开头时,则是从ClassPath根下获取
Class.getResource(“/”) == ClassLoader().getResource(“”)
package test;public class Test { public static void main(String[] args) { //获取Test类所在包路径 //输出../WebRoot/WEB-INF/classes/test/ System.out.println(Test.class.getResource("").getPath()); //获取ClassPath的路径 //输出../WebRoot/WEB-INF/classes/ System.out.println(Test.class.getClassLoader().getResource("").getPath()); System.out.println(Test.class.getResource("/").getPath()); //获取ClassPath根下的src.xml文件 //输出../WebRoot/WEB-INF/classes/src.xml System.out.println(Test.class.getClassLoader().getResource("src.xml").getPath()); System.out.println(Test.class.getResource("/src.xml").getPath()); //通过当前线程获取ClassLoader,推荐!!! System.out.println(Thread.currentThread().getContextClassLoader().getResource("src.xml").getPath()); //获取ClassPath根下test包中的package.xml //输出../WebRoot/WEB-INF/classes/test/package.xml System.out.println(Test.class.getClassLoader().getResource("test/package.xml").getPath()); System.out.println(Test.class.getResource("package.xml").getPath()); }}
三. web应用中servlet获取文件路径
ServletContext().getRealPath(String path);
path是相对于web应用的相对路径,而web应用都是发布到tomcat的webapps下面执行的,所以得到 webapps/projectName/path
ServletContext对象获得几种方式:
javax.servlet.http.HttpSession.getServletContext();
javax.servlet.jsp.PageContext.getServletContext();
javax.servlet.ServletConfig.getServletContext();
package test;import java.io.File;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/ServletPath")public class ServletPath extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getContextPath()); System.out.println(request.getRequestURI()); //获得当前web应用的绝对路径,即web应用发布到tomcat后的硬盘路径 //输出../webapps/pathTest/ System.out.println(this.getServletContext().getRealPath("")); System.out.println(this.getServletContext().getRealPath("/")); //获得project下文件的绝对路径 //输出../webapps/pathTest/project.xml System.out.println(this.getServletContext().getRealPath("project.xml")); System.out.println(this.getServletContext().getRealPath("/project.xml")); //获得WebRoot目录下文件的绝对路径,因为WebRoot目录相当于工程目录 //输出../webapps/pathTest/webroot.xml System.out.println(this.getServletContext().getRealPath("webroot.xml")); //获得WEB-INF目录下文件的绝对路径 //输出../webapps/pathTest/WEB-INF/webinf.xml System.out.println(this.getServletContext().getRealPath("WEB-INF/webinf.xml")); }}
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- JavaWeb中读取文件资源的路径问题
- java直接读取客户端txt文件 + JavaWeb中读取文件资源的路径问题
- javaweb 中读取文件路径问题
- Java Web中读取文件资源的路径问题
- javaweb项目中对于资源文件的读取
- javaweb项目中对于资源文件的读取
- javaweb项目中对于资源文件的读取
- javaweb项目中对于资源文件的读取
- javaweb项目中对于资源文件的读取
- javaweb项目中对于资源文件的读取
- JavaWeb中获取资源文件路径
- leetCode 123. Best Time to Buy and Sell Stock III
- linux命令
- (总结)Oracle 11g常用管理命令(用户、表空间、权限)
- PD4ML Cookbook PDF and True Type fonts(2)
- 微信小程序将图片数据流添加到image标签中
- JavaWeb中读取文件资源的路径问题
- [POJ 1715] Hexadecimal Numbers 求排列数/数位DP
- referrer属性(获取本页的URL,上一页URL)
- 文章标题
- java基础-------重载(Overload)和重写的区别(Override)
- WIFI DFS测试介绍
- 华硕笔记本BIOS设置禁用UEFI后使用U盘装系统方法
- jvm内存模型及类加载器
- lvs-tun 配置