• JavaWeb项目配置化之Properties类的使用


     转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6397370.html

     在项目中的应用见: https://github.com/ygj0930/CoupleSpace

        在我们开发项目时,有很多地方会出现重复的代码或者日后可能需要修改的代码,比如:连接数据库、设置项目编码格式、设定文件上传保存目录等等。重复代码或许可以用静态变量来实现全局调用而不必重复出现,但是毕竟是写死在代码里的,日后需要修改时还要修改源码,比较麻烦而且不便于维护。Java给我们提供了Properties类,可以用来解决这些问题。

        Properties类以"key=value"形式保存了一系列的配置信息,其中Key与value都是String类型。这样,我们可以把需要重复用的信息,或者日后需要修改的信息以配置的形式从源码中独立出来。修改时只需修改Properties文件,在源码中通过properties类对象来读取信息即可同步到整个项目。下面,介绍一下JavaWeb项目中使用Properties文件使项目配置化。

        一:在项目的src目录下新建  .properties  后缀名的文件。

        把文件放在src目录下,在部署时会自动部署到classes目录下的。放到别处是获取不到文件的。

        另: Properties文件名首字母不能大写否则也是找不到文件的。

        二:配置化项目

        用文本编辑文件或者在myeclipse中打开这个配置文件,把项目中可以配置化的信息提取出来,以 key=value  形式书写。注意一行一个

        一般可以配置化的信息有:项目中重复出现的语句,日后需要修改的信息等。比如:数据库驱动、数据库url、数据库名以及密码、项目编码格式、文件上传路径、临时文件保存路径等等。

       

        三:在项目中获取配置信息

        在properties文件中配置好信息后,在项目中可以通过Properties类对象来读取信息。分四步走:

        1:新建properties对象

        2:创建输入流打开properties文件。

        3:properties对象从输入流加载配置信息

        4:通过properties.getProperties(“key”)获取具体配置信息

        比如:

    Properties properties;
        public ArticleDAO() {
            super();
            properties=new Properties();
            InputStream in=ArticleDAO.class.getClassLoader().getResourceAsStream("config.properties");
            try {
                properties.load(in);
    Class.forName(properties.getProperty("dbDriver"));
                con = DriverManager.getConnection(
                        properties.getProperty("dbUrl"), properties.getProperty("dbName"), properties.getProperty("dbPass"));
           } catch (IOException e) {  
    e.printStackTrace(); }
    }

         这里要注意三点:

         1:

     InputStream in=当前类名.class.getClassLoader().getResourceAsStream("config.properties");

         2:

    InputStream in=当前类名.(如果是Java App,对应src;如果是Java Web App,对应class).getClassLoader().getResourceAsStream("config.properties");

        3:创建输入流时,Test.class.getClassLoader().getResourceAsStream()方法直接获得字节输入流,所以不用考虑路径中是否包含中文的问题,如果是通过Test.class.getClassLoader().getResource()方法,因为该方法返回值是URL,如果项目的目录中有中文命名,则获得的URL会出现乱码

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6397370.html
Copyright © 2020-2023  润新知