从不同的配置文件中读取配置信息

转载 2013年12月02日 11:36:50

在开发java EE 过程中遇到了太多的配置文件,今天我自己总结了下读取不同配置文件的方法:

并且在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,这样就能更加灵活,也更加容易在服务器上进行更改,配置文件是不会进行编译的

1.web.xml,在写servlet时必须用到的配置文件,当然一些配置的参数放在这里也是最方便读取的

需求就是进行数据库的连接,而将数据库的连接信息放在web.xml配置文件中,用servlet进行数据库连接的初始化;

复制代码
 1 <!-- 数据库连接的一些信息 StartUpServlet的参数配置在 <init-param>间-->
 2 <servlet>
 3 <servlet-name>userLogin</servlet-name>
 4 <servlet-class>sanitation.Util.StartUpServlet</servlet-class>
 5 <init-param>
 6 <param-name>uname</param-name>
 7 <param-value>sa</param-value>
 8 </init-param>
 9 <init-param>
10 <param-name>connUrl</param-name>
11 <param-value>jdbc:jtds:sqlserver://localhost:9433;DatabaseName=sanitation</param-value>
12 </init-param>
13 <init-param>
14 <param-name>psw</param-name>
15 <param-value>123@sports</param-value>
16 </init-param>
17 
18 <load-on-startup>2</load-on-startup>
19 </servlet>
复制代码

<load-on-startup>2</load-on-startup>能保证该servlet在web容器加载后马上进行初始化

servlet文件:进行配置信息的获取,连接的方法 CacheUtil.fillUser(uname,psw,connUrl);就省略不写了

复制代码
 1 package sanitation.Util;
 2 
 3 import javax.servlet.ServletException;
 4 import javax.servlet.http.HttpServlet;
 5 
 6 import sanitation.Util.CacheUtil;
 7 
 8 public class StartUpServlet extends HttpServlet {
 9 /**
10      * 一个初始化servlet,在web加载时会自动进行数据库的连接等一系列操作
11 */
12 private static final long serialVersionUID = 1L;
13 
14 protected String uname = null;
15 protected String connUrl=null;
16 protected String psw =null;
17 
18 public void init() throws ServletException {
19 /**
20          * 利用getInitParameter()获取web.xml中的参数,而this.getServletContext().getInitParameter()可以得到
21          * 这个servlet以外的web参数,下面的this相当于ServletConfig,(getServletContext().相当于Application,
22          * getServletConfig().某个servlet的配置),getServletContext()获得的是 <context-param> </context-param>配置的参数信息 
23          * getServletConfig()获得的是 <init-param> </init-param>配置的参数信息
24          * */
25 this.connUrl= this.getInitParameter("connUrl");
26 this.uname = this.getInitParameter("uname");
27 this.psw = this.getInitParameter("psw");
28 
29 CacheUtil.fillUser(uname,psw,connUrl);//Web容器启动后调用
30 }
31 
32 }
复制代码

读取配置文件时用到了方法getInitParameters(),而在ServletConfig和ServletContext都有getInitParameter方法, 这两个方法的都能从web.xml中获取参数
但是有区别的:ServletConfig的getInitParameter方法是用于获得该servlet的初始化信息,即位于 <init-param> </init-param>配置的参数信息,获取的方式

this.getServletConfigs().getInitParameter();即上面的获取方式,而ServletContext的getInitParameter方法是用于获取servlet以为的信息,即整个web配置

内的信息,即获得的是 <context-param> </context-param>配置的参数信息 ,获取方式this.getServletContexts().getInitParameter();

 

2.关于.properties 配置文件的读取操作,我们一般是利用JDK提供的java.util.Properties类来进行操作

情景:为了数据库的配置能动态的变化,灵活性促使我们不使用硬编码,而是用配置文件

配置文件内容如下(#为注释):

# 以下为进行数据库连接的信息

dbPort = localhost

databaseName = sanitation

dbUserName = sa

dbPassword = 123

# 以下为数据库表信息

dbTable = student

# 以下为服务器信息

ip = 172.18.4.40

。。。 该配置文件就是一个键值对(key-value),

 

以下代码是读取配置文件的一个工具类(两种类似的方式):

1.

复制代码
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("***.properties"); 
  Properties p = new Properties(); 
  try { 
   p.load(inputStream);    
  } catch (IOException e1) { 
   e1.printStackTrace();    
  }    
System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));   
复制代码

2.

复制代码
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.Properties; 
  
public class TestProperty { 
    private Properties propertie; 
    private FileInputStream inputFile; 
  
    /**  
     * @param filePath  
     *            要读取的配置文件的路径 名称  
     */ 
    public void initProperty(String filePath) { 
        propertie = new Properties(); 
        try { 
            inputFile = new FileInputStream(filePath); 
            propertie.load(inputFile);   
            inputFile.close();   
        } catch (FileNotFoundException ex) { 
            System.out.println("读取属性文件-失败!原因:文件路径错误或者文件不存在");   
            ex.printStackTrace();   
        } catch (IOException ex) { 
            System.out.println("装载文件-失败!");   
            ex.printStackTrace();   
        }   
  
    }   
  
    /**  
     *   
     * @param key  
     *            根据键获取对应的值  
     * @return  
     */ 
    public String getPropertyValue(String key) { 
        if (propertie.containsKey(key)) { 
            String value = propertie.getProperty(key);   
            return value; 
        } else { 
            return null; 
        }   
    } 
}
复制代码

除此之外,如果我们使用框架spring,那么spring也为我们封装了一个类org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来进行

.properties 的读取,不过spring的配置文件一般是进行某个bean的一些参数配置,配置文件testBeanConfig.properties如下:

helloWorldBean.class=chb.demo.vo.HelloWorldBean

helloWorldBean.helloWorld=Hello!world!

属性文件中的"helloWordBean"名称即是Bean的别名设定,.class用于指定类来源。

读取的代码:

BeanDefinitionRegistry reg = new DefaultListableBeanFactory(); 
 PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg); 
 reader.loadBeanDefinitions(new ClassPathResource("testBeanConfig.properties")); 
 BeanFactory factory = (BeanFactory)reg;    
 HelloWorldBean helloBean = (HelloWorldBean)factory.getBean("helloWorldBean");    
 System.out.println(helloBean.getHelloWorld());  

相关文章推荐

spring配置文件读取jdbc.properties的配置信息

时间:2016-12-3 内容:spring读取jdbc.properties的配置信息; 一.jdbc.properties的配置信息 jdbc.properties的配置信息主要包括用户名、密码以...

windows 批处理按照配置信息从主机不同目录获取文件保存在windows

1. 首先是执行的主脚本 echo off rem 配置文件目录 set cfgDir=%cd%\cfg set binDir=%cd%\bin set bakInI=%cfgDir%\ba...

配置文件的配置信息报错

  • 2014年04月24日 09:54
  • 307KB
  • 下载

ckeditor 配置文件Config.js的一些具体配置信息

原帖地址:   在ckeditor目录下,有个Config.js 未配置的内容如下: CKEDITOR.editorConfig = function( config ) { // Define c...

mybatis.xml配置文件常用配置信息详解

// mybatis.xml配置文件常用配置信息详解当,id是名称(可自定义),通过factory.getBean(“id”)来获得实例。class是该bean的类路径 ...

ssm框架maven配置文件pom.xml配置信息

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,

java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式,在properties 文件中,...

JavaWeb_Servlet_应用_读取文件配置信息

本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/9079439 /* * 在Servlet中读取文件配置信息的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从不同的配置文件中读取配置信息
举报原因:
原因补充:

(最多只允许输入30个字)