JavaWeb学习——获取类路径下的资源
对于JavaWeb而言,获取类路径下的资源,就是获取classes目录下的资源。
获取资源的方式有两种,利用Class或ClassLoader。
Class类的getResourceAsStream(String path):
- 路径以“/”开头,相对classes路径;
- 路径不以“/”开头,相对当前class文件所有路径,例如在cn.sdut.servlet.MyServlet中执行,那么相对/classes/cn/sdut/servlet/路径;
ClassLoader类的getResourceAsStream(String path):
- 相对classes路径;
1 public class BServlet extends HttpServlet { 2 3 public void doGet(HttpServletRequest request, HttpServletResponse response) 4 throws ServletException, IOException { 5 //方式一 6 ClassLoader cl = this.getClass().getClassLoader(); 7 InputStream input = cl.getResourceAsStream("a.txt"); 8 // 读取输入流转换成字符串(使用commons-io-2.4.jar) 9 String s = IOUtils.toString(input); 10 System.out.println(s); 11 12 //方式二 13 Class c = this.getClass(); 14 // 路径前加"/"是相对于classes路径下 15 InputStream is = c.getResourceAsStream("/a.txt"); 16 // 路径相对于当前.class文件 17 // InputStream is = c.getResourceAsStream("a.txt"); 18 String str = IOUtils.toString(is); 19 System.out.println(str); 20 21 /* 22 * 使用Class获取WebRoot目录下的资源 23 */ 24 // 第一个'/'表示在classes目录下,'../'表示回到上一级目录 25 InputStream is1 = c.getResourceAsStream("/../../index.jsp"); 26 String str1 = IOUtils.toString(is1); 27 System.out.println("index:" + str1); 28 } 29 30 }