之前的classLoader值加载资源只能获取src路径下的配置文件,而不能加载web下的文件。所以我们得使用下面的方法来获取web目录下的资源文件。
1.如何获取Tomcat服务器的web项目

运行tomcat,打开IDEA输出的第一行

在电脑打开这个地址

打开这个xml:
下面这个就是你tomcat存放你这个项目的路径:


2.web目录下的资源文件如何加载
获取文件的真实(服务器)路径
- 方法:String getRealPath(String path)

我们想在ServletContextDemo5获取src下的b.txt和web目录下的d.txt,和web目录中的WEB-INF目录下的c.txt目录。该怎么获取呢?(b.txt比较难)。首先我们新建一个WEB-INF目录放b.txt
package cn.it.web.ServletContextest;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
/**
* @author QLBF
* @version 1.0
* @date 2020/11/24 8:49
*/
@WebServlet("/ServletContextDemo5")
public class ServletContextDemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
ServletContext功能:
1. 获取MIME类型:
2. 域对象:共享数据
3. 获取文件的真实(服务器)路径
*/
// 通过HttpServlet获取
ServletContext context = this.getServletContext();
// 获取文件的服务器路径,你就这样想就行,把ServletContextDemo5直接当成是web目录下就行,这和其他的路径有点不一样
String d = context.getRealPath("d.txt");//web目录下资源访问
System.out.println(d);
//File file1 = new File(d);
String c = context.getRealPath("WEB-INF/c.txt");//WEB-INF目录下的资源访问
System.out.println(c);
//File file2 = new File(c);
String b = context.getRealPath("WEB-INF/classes/b.txt");//src目录下的资源访问
System.out.println(b);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
这里指的注意的是web项目的src目录是放在WEB-INF的classes目录下的,所以b.txt比较难写
本文介绍了如何在Tomcat服务器中获取Web项目的路径,并展示了如何使用ServletContext获取web目录及其子目录(如WEB-INF)下的资源文件的真实路径。通过ServletContext的getRealPath()方法,可以访问到服务器上的d.txt、WEB-INF/c.txt和WEB-INF/classes/b.txt等文件。
2412





