首页技术文章正文

Servlet如何读取Web资源文件?【操作演示】

更新时间:2022-04-12 来源:黑马程序员 浏览量:

IT培训班

在实际开发中,有时候可能会需要读取Web应用中的一些资源文件,比如配置文件,图片等。为此,在ServletContext接口中定义了一些读取Web资源的方法,这些方法是依靠Servlet容器来实现的。Servlet容器根据资源文件相对于Web应用的路径,返回关联资源文件的IO流、资源文件在文件系统的绝对路径等。表3-5中列举了ServletContext接口中用于获取资源路径的相关方法,具体如下:

ServletContext接口的常用方法
ServletContext接口的常用方法

了解了ServletContext接口中用于获得Web资源路径的方法后,接下来通过一个案例,分步骤演示如何使用ServletContext对象读取资源文件,具体如下:

(1)创建一个资源文件。在chapter03项目中右击src目录,选择【New】—>【Other】选项,进入创建文件的界面,如图3-40所示。

创建文件

新建文件的界面单击图3-40所示的【Next】按钮,进入填写文件名称的界面,如下图所示。

填写文件名称

填写文件名称的界面在上图中,【File name】文本框中的内容为资源文件的名称,在此,将创建的资源文件命名为itcast.properties,并且选择存放的目录为src目录。单击【Finish】按钮,完成配置文件的创建。在创建好的itcast.properties文件中,输入如下所示的配置信息:

Company = itcast
Address= Beijing

需要注意的是,Eclipse中src目录下创建的资源文件在Tomcat服务器启动时会被复制到项目的WEB-INF/classes目录下,如下图所示。

WEB-INF/classes目录

(2)编写读取itcast.properties资源文件的Servlet。在cn.itcast.servlet包中创建一个名称为TestServlet06的Servlet类,该类的实现代码如文件3-9所示。

文件TestServlet06.java

package cn.itcast.servlet;
import java.io.*;
import java.util.Properties;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet06 extends HttpServlet {
    public void doGet(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        ServletContext context = this.getServletContext();
        PrintWriter out = response.getWriter();
        //获取相对路径中的输入流对象
        InputStream in = context
        .getResourceAsStream("/WEB-INF/classes/itcast.properties");
        Properties pros = new Properties();
        pros.load(in);
        out.println("Company=" + pros.getProperty("Company") + "<br>");
        out.println("Address=" + pros.getProperty("Address") + "<br>");
    }
    public void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

在文件3-9中,使用ServletContext的getResourceAsStream(String path)方法获得了关联itcast.properties资源文件的输入流对象,其中的path参数必须以正斜线“/”开始,表示itcast.properties文件相对于Web应用的相对路径。

(3) 启 动Tomcat服 务 器 , 在 浏 览 器 的 地 址 栏 中 输 入地址“http://localhost:8080/chapter03/TestServlet06”访问TestServlet06,浏览器的显示结果如图3-43所示。

启 动Tomcat服 务 器

运行结果从图3-43中可以看出,itcast.properties资源文件的内容被读取出来。由此可见,使用ServletContext可以读取到Web应用中的资源文件。

(4)有的时候,开发者需要获取的是资源的绝对路径。接下来,对文件3-9TestServlet06.java进行修改,通过使用getRealPath(String path)方法获取资源文件的绝对路径,修改后的代码如文件3-10所示。

文件3-10TestServlet06.java

package cn.itcast.servlet;
import java.io.*;
import java.util.Properties;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet06 extends HttpServlet {
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        ServletContext context = this.getServletContext();
        //获取文件绝对路径
        String path = context
                    .getRealPath("/WEB-INF/classes/itcast.properties");
        FileInputStream in = new FileInputStream(path);
        Properties pros = new Properties();
        pros.load(in);
        out.println("Company=" + pros.getProperty("Company") + "<br>");
        out.println("Address=" + pros.getProperty("Address") + "<br>");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

在文件3-10中,使用ContextServlet对象的getRealPath(String path)方法获得itcast.properties资源文件的绝对路径path,然后使用这个路径创建关联itcast.properties文件的输入流对象。

(5)启动Tomcat服务器,在浏览器的地址栏中再次输入地址“http://localhost:8080/chapter03/TestServlet06”访问TestServlet06,同样可以看到图3-43所显示的内容。



猜你喜欢:

Servlet是用来做什么的?Servlet技术的特点

servlet事件监听器工作步骤介绍

ServletFileUpload类方法有哪些?

Java培训之ServletContext的介绍与获取

黑马程序员Java高级软件工程师培训

分享到:
在线咨询 我要报名
和我们在线交谈!