在这里主要介绍ServletContext怎么从.properties文件中用键得到值的。
ServletContext读取的.properties文件一般放在的位置有:1直接放在WebRoot下面.2.放在WebRoot下面的某个文件夹下面.3.放在WEB-INF下面某个文件夹的下面。
特别注意不要把.properties文件直接放在WEB-INF下面。(因为这样取得的结果是null)
下面这张图中的红色边框的矩形就是上述的几种位置:
a.properties 、b.properties 、c.properties、 d.properties文件的内容都为如下所示:
sixi=town
rapeFlower=ouyangfeng
a.properties 、b.properties 、c.properties、 d.properties文件的代码如下所示:
1 package com.qls.counter; 2 /** 3 * 用ServletContext读取配置a.properties 、b.properties 、 4 * c.properties、 d.properties 5 * 并证明不要把文件直接写在WEB-INF下,可以写在WEB-INF下面的某个文件夹的下面。 6 */ 7 import java.io.IOException; 8 import java.io.InputStream; 9 import java.io.PrintWriter; 10 import java.util.Properties; 11 12 import javax.servlet.ServletException; 13 import javax.servlet.http.HttpServlet; 14 import javax.servlet.http.HttpServletRequest; 15 import javax.servlet.http.HttpServletResponse; 16 17 public class Test extends HttpServlet { 18 19 20 public void doGet(HttpServletRequest request, HttpServletResponse response) 21 throws ServletException, IOException { 22 23 response.setContentType("text/html;charset=utf-8"); 24 PrintWriter out = response.getWriter(); 25 //获取输入流: 26 InputStream in = this.getServletConfig().getServletContext().getResourceAsStream("/a.properties"); 27 InputStream in2 = this.getServletContext().getResourceAsStream("/WEB-INF/b.properties"); 28 InputStream in3 = this.getServletContext().getResourceAsStream("/chenzhen/d.properties"); 29 InputStream in4 = this.getServletContext().getResourceAsStream("/WEB-INF/ouyangfeng/c.properties"); 30 //创建Properties 31 Properties prop=new Properties(); 32 //加载输入流 33 prop.load(in);//把in2 in3 in4依次带入进去验证。 34 out.println("sixi="+prop.getProperty("sixi")); 35 out.println("<br/>"); 36 out.println("rapeFlower="+prop.getProperty("rapeFlower")); 37 } 38 39 40 public void doPost(HttpServletRequest request, HttpServletResponse response) 41 throws ServletException, IOException { 42 43 response.setContentType("text/html;charset=utf-8"); 44 PrintWriter out = response.getWriter(); 45 this.doGet(request, response); 46 } 47 48 }/*Output: 49 这是in in3 in4的输出结果 50 sixi=town 51 rapeFlower=ouyangfeng 52 in2的输出结果是: 53 sixi=null 54 rapeFlower=null 55 **///:~
从上面的输出结果可以证明本文一开始所说的内容,不要把文件直接放在WEB-INF下面。
至于怎么从ServletContext读取配置文件可以总结为四句话:获取输入流、 创建属性、 加载输入流、 获得属性值。