讀取classpath下資原始檔的方式
阿新 • • 發佈:2018-12-11
建立一個servlet命名為ServletContextFile2:
import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Properties; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletContextFile2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } @Override public void init(ServletConfig config) throws ServletException { ServletContext sc=config.getServletContext(); //獲得classpath下的資源的檔案的流,用於ckasspath下的檔案釋出之後實在/WEB-INF/classes下,所以去指定/WEB-INF/classes/ContextFileTest2.properties //讀取方法一(不常用) //java.io.InputStream in=sc.getResourceAsStream("/WEB-INF/classes/ContextFileTest2.properties"); //讀取方法二(使用類載入器的方式讀取classpath下的資原始檔,好處:不依賴於ServletContext,任何類都可以獲得classpath下的資原始檔,不需要再自己指定/WEB-INF/classes) java.io.InputStream in=this.getClass().getClassLoader().getResourceAsStream("ContextFileTest2.properties"); Properties prop=new Properties(); try { prop.load(in); System.out.println(prop.get("key2")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
在src下new一個檔案命名為ContextFileTest2.properties:
key2=test2
配置web.xml檔案:
<servlet> <servlet-name>ServletContextFile2</servlet-name> <servlet-class>ServletContextFile2</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletContextFile2</servlet-name> <url-pattern>/ServletContextFile2</url-pattern> </servlet-mapping>
在瀏覽器中輸入:http://localhost:8080/servlet_demo/ServletContextFile2
輸出效果:
檔案目錄結構: