ServletContext讀取web應用中的資源文件

ServletContext讀取web應用中的資源文件

1.獲取真實路徑

ServletContext接口的getRealPath(Stringpath)方法返回的是資源文件在服務器文件系統上的真實路徑(帶有盤符)。

參數path代表資源文件的虛擬路徑,它應該以正斜線(/)開始,“/“表示當前web應用的根目錄,也可以不以“/“開始。

示例如下:

public class PathServlet extends HttpServlet{

    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

           throwsServletException, IOException {

//”/”表示web應用的根路徑

        ServletContextservletContext=this.getServletContext();

        String path=servletContext.getRealPath("/");

       System.out.println(path);

       String indexPath=servletContext.getRealPath("/index.jsp");

       System.out.println(indexPath);

    }

}

2.獲取資源流

ServletContext接口的getResouceAsStream(String path)方法可以獲取path指定資源的流。

參數path代表資源文件的虛擬路徑,它應該以正斜線(/)開始,“/“表示當前web應用的根目錄,也可以不以“/“開始。

其實這個方法也可以理解爲,先獲得資源的真實路徑,再使用InputStream input=new FileInputStream(newFile(servletContext.getRealPath(path)))創建一個輸入流。

示例如下

ServletContext servletContext=this.getServletContext();

//使用ServletContext獲取資源流

InputStream input=servletContext.getResourceAsStream("/index.jsp");

System.out.println(input);

3.獲取指定目錄下的所有資源路徑

通過ServletContext接口的getResourcePaths(String path)方法,該方法的返回值是一個Set集合該方法的參數一定要以”/”開頭,否則會報錯

例如將WEB-INF目錄下的所有資源路徑都獲取到:

ServletContext servletContext=this.getServletContext();

//使用ServletContext獲取指定目錄下所有資源路徑

Set<String> paths=servletContext.getResourcePaths("/WEB-INF");

System.out.println(paths);//[/WEB-INF/lib, /WEB-INF/classes,/WEB-INF/web.xml]

注意:WEB-INF目錄下的lib和classes都是目錄,但是通過getResourcePaths()方法不會進一步會獲得lib和classes目錄下的資源路徑。

發佈了119 篇原創文章 · 獲贊 57 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章