三种加载方式

重点总结:
    即:三种加载方式
    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》用传统方式读取文件的时候,是以相对于tomcatin的目录下访问的
                        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/目录
        详见"/代表的路径种类"图。

原文地址:https://www.cnblogs.com/SkyGood/p/3970412.html