備註:本文以properties文件爲例
一、通過ServletContext讀取文件
1.通過ServletContext讀取放置在src下的properties文件
package com;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Test_ServletContext")
public class Test_ServletContext extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/test.properties"); //項目的目錄結構和部署在服務器上的目錄結構並不一 致,src對應的是/WEB-INF/classes
Properties props = new Properties();
props.load(in);
String key= props.getProperty("key"); //獲取key所對應的字符串
System.out.println(key);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
2.通過ServletContext讀取放置在WebRoot下的properties文件
package com;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Test_ServletContext")
public class Test_ServletContext extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
InputStream in = this.getServletContext().getResourceAsStream("/test.properties");
Properties props = new Properties();
props.load(in);
String key= props.getProperty("key"); //獲取key所對應的字符串
System.out.println(key);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
備註:其實1和2的方式一樣,但是因爲項目的目錄結構和部署在服務器上的目錄結構不一致這個細節,所以就還是寫出來了
二、用FileInputStream讀取資源文件
package com;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Test_ServletContext")
public class Test_ServletContext extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = this.getServletContext().getRealPath("/WEB-INF/classes/test.properties");//通過ServletContext對象獲取該資源的絕對路徑
FileInputStream in = new FileInputStream(path);
Properties props = new Properties();
props.load(in);
String key= props.getProperty("key"); //獲取key所對應的字符串
System.out.println(key);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
備註:這種方式雖然麻煩一點,但是可以得到當前讀取資源文件的名稱