Servlet 获取文件目录

本文介绍在Servlet中如何通过HttpServletRequest和ServletContext对象获取项目中文件的虚拟和真实路径,包括src、web和WEB-INF目录下的文件路径获取方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet 获取文件目录


在web项目中,经常会用到配置文件。加载配置文件时就要需要目录

  • 通过Request获取虚拟目录

@WebServlet("/failServlet")
public class FailServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String path = req.getContextPath();
        //如果项目发布的虚拟目录是/day12
        //则 path = "/day12"
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

  • 通过 ServletContext对象 获取文件真实路径
  1. 先说ServletContext对象的获取方式
    1. 通过request对象获取 request.getServletContext();
    2. 通过HttpServlet获取 this.getServletContext();
    3. 通过Filter中的init的config获取 config.getServletContext();
  2. ServletContext对象的功能
    1. 获取MIME类型:
    2. 共享数据:(这也是域对象
    3. 获取文件的真实(服务器)路径 `getRealPath(“文件路径”)
文件位置文件名目录描述
srca.txtWEB-INF/classes/a.txt
webb.txt/b.txt
web/WEB-INFc.txtWEB-INF/c.txt

@WebServlet("/servletContextDemo5")
public class ServletContextDemo5 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /**
         * ServletContext第3个功能:
         *  3. 获取文件的真实(服务器)路径
         * 		1. 方法:String getRealPath(String path)
         */
        ServletContext context1 = this.getServletContext();
        //获取文件的服务器路径
        //1-web目录下的资源访问    "/"+文件名
        String b_path = context1.getRealPath("/b.txt");
        System.out.println(b_path);

        //2-WEB-INF下的资源访问
        String c_path = context1.getRealPath("WEB-INF/c.txt");
        System.out.println(c_path);

        //3-src目录下的资源访问
        String a_path = context1.getRealPath("WEB-INF/classes/a.txt");
        System.out.println(a_path);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值