servlet读取资源文件的三种方式

本文介绍了在Java中使用不同方式读取配置文件的方法,包括利用ServletContext、ResourceBundle及类加载器等技术手段,并通过具体实例展示了如何从不同路径下加载properties文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用ServletContext.getRealPath():
特点:读取应用中任何文件。只能在Web环境下用。*可以读取任何路径下的propertist文件
利用ResourceBundle读取配置文件
特点:可以用在非web环境下。*但是只能读取类路径中的properties文件
利用类加载器读取配置文件(专业)

特点:可以用在非web环境下。*可以读取类路径下的任何文件。


举一个例子:

    package com.dp.java.servlet;  
      
    import java.io.FileInputStream;  
    import java.io.FileNotFoundException;  
    import java.io.IOException;  
    import java.io.InputStream;  
    import java.io.PrintWriter;  
    import java.util.Properties;  
    import java.util.ResourceBundle;  
      
    import javax.servlet.ServletContext;  
    import javax.servlet.ServletException;  
    import javax.servlet.http.HttpServlet;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
      
    /** 
     * 其他读取资源文件的方式 
     * 
     */  
    public class ServletDom7 extends HttpServlet {  
      
        public void doGet(HttpServletRequest request, HttpServletResponse response)  
                throws ServletException, IOException {  
            System.out.println("--------利用ServletContext读取配置文件----------");  
            //利用servletcontext来读取a1.properties  
            test1();  
            //利用servletcontext来读取a2.properties  
            test2();  
            //利用servletcontext来读取a3.properties  
            test3();  
            System.out.println("--------利用ResourceBundle读取配置文件----------");  
            test4();  
            test5();  
            System.out.println("--------利用类加载器读取配置文件----------");  
            test6();  
            test7();  
        }  
      
        private void test1() throws IOException, FileNotFoundException {  
            ServletContext sc=getServletContext();  
            String path=sc.getRealPath("/WEB-INF/a1.properties");  
            Properties props=new Properties();//读取文件类型创建对象。  
            props.load(new FileInputStream(path));  
            String value=props.getProperty("name1");  
            System.out.println(value);//结果:a1  
        }  
        private void test2() throws IOException, FileNotFoundException {  
            ServletContext sc=getServletContext();  
            String path=sc.getRealPath("/WEB-INF/classes/a2.properties");  
            Properties props=new Properties();//读取文件类型创建对象。  
            props.load(new FileInputStream(path));  
            String value=props.getProperty("name2");  
            System.out.println(value);//结果:a2  
        }  
      
        private void test3() throws IOException, FileNotFoundException {  
            ServletContext sc=getServletContext();  
            String path=sc.getRealPath("/WEB-INF/classes/com/dp/java/file/a3.properties");  
            Properties props=new Properties();//读取文件类型创建对象。  
            props.load(new FileInputStream(path));  
            String value=props.getProperty("name3");  
            System.out.println(value);//结果:a3  
        }  
          
          
        /** 
         * 利用ResourceBundle读取配置文件a2.properties 
         */  
          
        private void test4()throws IOException, FileNotFoundException {  
            // TODO Auto-generated method stub  
            ResourceBundle rb=ResourceBundle.getBundle("a2");//基名  
            String value=rb.getString("name1");//keys名字  
            System.out.println(value);  
        }  
          
        private void test5()throws IOException, FileNotFoundException {  
            // TODO Auto-generated method stub  
            ResourceBundle rb=ResourceBundle.getBundle("com.dp.java.file.a3");//基名  
            String value=rb.getString("name2");//keys名字  
            System.out.println(value);  
        }  
      
          
        /** 
         * 利用类加载器来读取配置文件a2.properties 
         */  
          
        private void test6()throws IOException, FileNotFoundException {  
            // TODO Auto-generated method stub  
            ClassLoader c1=ServletDom7.class.getClassLoader();//得到ServletDom7类加载器  
            InputStream in=c1.getResourceAsStream("a2.properties");  
            Properties prp=new Properties();  
            prp.load(in);  
            String value=prp.getProperty("name2");  
            System.out.println(value);  
              
        }  
          
        private void test7()throws IOException, FileNotFoundException {  
            // TODO Auto-generated method stub  
            ClassLoader c1=ServletDom7.class.getClassLoader();//得到ServletDom7类加载器  
            InputStream in=c1.getResourceAsStream("/com/dp/java/file/a3.properties");  
            Properties prp=new Properties();  
            prp.load(in);  
            String value=prp.getProperty("name3");  
            System.out.println(value);  
        }  
      
        public void doPost(HttpServletRequest request, HttpServletResponse response)  
                throws ServletException, IOException {  
            doGet(request, response);  
        }  
      
    }  

通过网址运行url-pattern类走这个类。


完全转载自http://blog.youkuaiyun.com/mr_li13/article/details/48598361

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值