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 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。