web目录下的资源文件如何加载(使用ServletContext对象.getRealPath)、如何获取Tomcat服务器的web项目

本文介绍了如何在Tomcat服务器中获取Web项目的路径,并展示了如何使用ServletContext获取web目录及其子目录(如WEB-INF)下的资源文件的真实路径。通过ServletContext的getRealPath()方法,可以访问到服务器上的d.txt、WEB-INF/c.txt和WEB-INF/classes/b.txt等文件。

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

1.如何获取Tomcat服务器的web项目

在这里插入图片描述
运行tomcat,打开IDEA输出的第一行
在这里插入图片描述
在电脑打开这个地址在这里插入图片描述

在这里插入图片描述
打开这个xml:在这里插入图片描述
下面这个就是你tomcat存放你这个项目的路径:
在这里插入图片描述
在这里插入图片描述

2.web目录下的资源文件如何加载

获取文件的真实(服务器)路径

  1. 方法: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比较难写

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值