首頁技術文章正文

Servlet如何讀取Web資源文件?【操作演示】

更新時間:2022-04-12 來源:黑馬程序員 瀏覽量:

IT培訓班

在實際開發(fā)中,有時候可能會需要讀取Web應用中的一些資源文件,比如配置文件,圖片等。為此,在ServletContext接口中定義了一些讀取Web資源的方法,這些方法是依靠Servlet容器來實現(xiàn)的。Servlet容器根據(jù)資源文件相對于Web應用的路徑,返回關聯(lián)資源文件的IO流、資源文件在文件系統(tǒng)的絕對路徑等。表3-5中列舉了ServletContext接口中用于獲取資源路徑的相關方法,具體如下:

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

了解了ServletContext接口中用于獲得Web資源路徑的方法后,接下來通過一個案例,分步驟演示如何使用ServletContext對象讀取資源文件,具體如下:

(1)創(chuàng)建一個資源文件。在chapter03項目中右擊src目錄,選擇【New】—>【Other】選項,進入創(chuàng)建文件的界面,如圖3-40所示。

創(chuàng)建文件

新建文件的界面單擊圖3-40所示的【Next】按鈕,進入填寫文件名稱的界面,如下圖所示。

填寫文件名稱

填寫文件名稱的界面在上圖中,【File name】文本框中的內(nèi)容為資源文件的名稱,在此,將創(chuàng)建的資源文件命名為itcast.properties,并且選擇存放的目錄為src目錄。單擊【Finish】按鈕,完成配置文件的創(chuàng)建。在創(chuàng)建好的itcast.properties文件中,輸入如下所示的配置信息:

Company = itcast
Address= Beijing

需要注意的是,Eclipse中src目錄下創(chuàng)建的資源文件在Tomcat服務器啟動時會被復制到項目的WEB-INF/classes目錄下,如下圖所示。

WEB-INF/classes目錄

(2)編寫讀取itcast.properties資源文件的Servlet。在cn.itcast.servlet包中創(chuàng)建一個名稱為TestServlet06的Servlet類,該類的實現(xiàn)代碼如文件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)方法獲得了關聯(lián)itcast.properties資源文件的輸入流對象,其中的path參數(shù)必須以正斜線“/”開始,表示itcast.properties文件相對于Web應用的相對路徑。

(3) 啟 動Tomcat服 務 器 , 在 瀏 覽 器 的 地 址 欄 中 輸 入地址“http://localhost:8080/chapter03/TestServlet06”訪問TestServlet06,瀏覽器的顯示結(jié)果如圖3-43所示。

啟 動Tomcat服 務 器

運行結(jié)果從圖3-43中可以看出,itcast.properties資源文件的內(nèi)容被讀取出來。由此可見,使用ServletContext可以讀取到Web應用中的資源文件。

(4)有的時候,開發(fā)者需要獲取的是資源的絕對路徑。接下來,對文件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,然后使用這個路徑創(chuàng)建關聯(lián)itcast.properties文件的輸入流對象。

(5)啟動Tomcat服務器,在瀏覽器的地址欄中再次輸入地址“http://localhost:8080/chapter03/TestServlet06”訪問TestServlet06,同樣可以看到圖3-43所顯示的內(nèi)容。



猜你喜歡:

Servlet是用來做什么的?Servlet技術的特點

servlet事件監(jiān)聽器工作步驟介紹

ServletFileUpload類方法有哪些?

Java培訓之ServletContext的介紹與獲取

黑馬程序員Java高級軟件工程師培訓

分享到:
在線咨詢 我要報名
和我們在線交談!