三种加载方式
重点总结:
即:三种加载方式
1》传统加载方式------默认路径:tomcat/bin/目录
2》使用ServletContext对象-----默认路径:web应用(工程)目录
3》使用类加载器------默认路径:WEB-INF/classes/目录
一、利用ServletContext对象读取资源文件--默认目录为:工程(应用)路径
重点方法:
InputStream getResourceAsStream("文件路径");
code:
ServletContext context = this.getServletContext();
InputStream is = context.getResourceAsStream("/doc/config.properties");// /代表的当前应用(工程)
Properties props = new Properties();
props.load(is);
System.out.println(props.getProperty("email"));
注意:
1》用传统方式读取文件的时候,是以相对于tomcat\bin的目录下访问的
2》如果以ServletContext方式读取资源文件(text/xml/properties),是相对于web服务器的当前web应用(工程)目录而言的
此时/:表示当前web应用(工程),即:day06
二、通过类加载器加载文件:默认目录为WEB-INF/classes/
注意:
1》类加载器只能加载IDE工具下src目录下的资源文件,其它目录无法加载。
2》默认的路径为WEB-INF/classes/目录,即:此时/表示:/WEB-INF/classess/目录
重点方法:
1》获得类加载器( Class对象的方法)
ClassLoader getClassLoader();
2》获取资源输入流
ClassLoader getResourceAsStream(String name);
步骤:
1》取得当前对象的字节码对象
Class clazz = this.getClass();
2》取得当前对象的类加载器
ClassLoader cl = clazz.getClassLoader();
3》通过类加载器加载资源
InputStream is = cl.getResourceAsStream("资源路径");
code:
//1,获取当前对象的字节码对象
Class clazz = this.getClass();
//2,返回当前对象的类加载器
ClassLoader cl = clazz.getClassLoader();
//3,根据类加载器获取输入流
InputStream is = cl.getResourceAsStream("/cn/itcast/web/Servlet/config.properties");
##【注意】两种加载方式的区别?
1)ServletContext方式
1》加载的资源文件的位置任意
2》加载文件时,只会以流的方式读取,不会一次性的将文件全部加载。 适合大文件
3》默认目录为,当前web应用的目录。
2)类加载器的方式
1》加载的资源文件的位置只能放在类路径下,即IDE工具的src目录下
2》加载文件时,会一次性加载全部文件。 适合小文件。
3》默认目录为/WEB-INF/classes/目录。
补充:有关/的问题?
服务端:
物理硬盘路径使用\[window系统]
网络路径使用/
客户端:
如果/代表客户端路径的话,表示tomcat/webapps/目录
详见"/代表的路径种类"图。