1 package cn.gs.ly; 2 import java.io.FileInputStream; 3 import java.io.FileNotFoundException; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.util.Properties; 7 import java.util.ResourceBundle; 8 import javax.servlet.ServletContext; 9 import javax.servlet.ServletException; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13 14 /** 15 * 读取资源文件 16 * 1.ServletContext.getRealPath() 可读取应用中的任何文件,但只能在web中使用。 17 * 2.ResourceBundle 可以在非web中使用,但是只能读取类路径(src)中的properties文件。 18 * 3.利用类加载器ClassLoader 可以在非web环境中使用,可以读取类路径下任何文件。 19 * a.properties:E:\Workspace\Web017\WebContent\WEB-INF\a.properties 20 * b.properties:E:\Workspace\Web017\src\b.properties 21 * c.properties:E:\Workspace\Web017\src\cn\gs\ly\c.properties 22 * */ 23 public class ServletPro extends HttpServlet{ 24 @Override 25 public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 26 //测试方法 27 test1(); 28 // test2(); 29 // test3(); 30 // test4(); 31 // test5(); 32 // test6(); 33 // test7(); 34 } 35 @Override 36 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 37 this.doGet(req, resp); 38 } 39 //========================== 使用getRealPath() =============================================================== 40 //使用getRealPath()读取a.properties 41 private void test1() throws FileNotFoundException, IOException{ 42 ServletContext sc = this.getServletContext(); 43 String path = sc.getRealPath("/WEB-INF/a.properties"); 44 Properties pro = new Properties(); 45 pro.load(new FileInputStream(path)); 46 String value = pro.getProperty("username"); 47 System.out.println(value); 48 } 49 //使用getRealPath()读取b.properties 50 private void test2() throws FileNotFoundException, IOException{ 51 ServletContext sc = this.getServletContext(); 52 String path = sc.getRealPath("/WEB-INF/classes/b.properties"); 53 Properties pro = new Properties(); 54 pro.load(new FileInputStream(path)); 55 String value = pro.getProperty("username"); 56 System.out.println(value); 57 } 58 //使用getRealPath()读取c.properties 59 private void test3() throws FileNotFoundException, IOException{ 60 ServletContext sc = this.getServletContext(); 61 String path = sc.getRealPath("/WEB-INF/classes/cn/gs/ly/c.properties"); 62 Properties pro = new Properties(); 63 pro.load(new FileInputStream(path)); 64 String value = pro.getProperty("username"); 65 System.out.println(value); 66 } 67 68 //======================== 使用ResourceBundle对象 ================================================================= 69 //使用ResourceBundle对象读取b.properties 70 private void test4(){ 71 ResourceBundle rb = ResourceBundle.getBundle("b"); // 基名 72 String value = rb.getString("username"); 73 System.out.println(value); 74 } 75 //使用ResourceBundle对象读取c.properties 76 private void test5(){ 77 ResourceBundle rb = ResourceBundle.getBundle("cn.gs.ly.c"); // 基名 78 String value = rb.getString("username"); 79 System.out.println(value); 80 } 81 82 //======================= 利用类加载器ClassLoader ================================================================== 83 //利用类加载器ClassLoader 读取b.properties文件 84 private void test6() throws IOException{ 85 //Class c = ServletPro.class; 86 //c.getClassLoader(); 87 ClassLoader c = ServletPro.class.getClassLoader(); 88 InputStream in = c.getResourceAsStream("b.properties"); 89 Properties pro = new Properties(); 90 pro.load(in); 91 String value = pro.getProperty("username"); 92 System.out.println(value); 93 } 94 //利用类加载器ClassLoader 读取c.properties文件 95 private void test7() throws IOException{ 96 //Class c = ServletPro.class; 97 //c.getClassLoader(); 98 ClassLoader c = ServletPro.class.getClassLoader(); 99 InputStream in = c.getResourceAsStream("cn/gs/ly/c.properties"); 100 Properties pro = new Properties(); 101 pro.load(in); 102 String value = pro.getProperty("username"); 103 System.out.println(value); 104 } 105 106 }