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

转载 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());  

java中读取properties配置文件中的内容的三种方式

一种是在xml文件中读取: properties(config.properties)文件内容为(连接mysql数据库的例子): debug = false recomArticleMaxCount ...
  • west_three_boy
  • west_three_boy
  • 2017年05月23日 11:25
  • 1711

简单servlet第三篇---使用servlet读取配置文件的内容

最近在做一个公司的网站,前台js有一些动态配置的参数,就想着使用配置文件的形式来读取,用前台javascript应该也能做到,但是想练练java的技术,所以下面使用java来实现读取配置文件的内容 ...
  • liuying1802028915
  • liuying1802028915
  • 2017年10月26日 17:18
  • 126

从配置文件里读取配置信息

配置文件: messageConfig.properties SN=SDK-BBX-010-22482 PWD=SDK-BBX-010-22482c5@e520@ SIGN=\u3010\u4E2D\...
  • CHBSRZF
  • CHBSRZF
  • 2015年08月13日 10:12
  • 208

域控制器不可用的情况下使用域账户登录客户机

最近在上活动目录的课程,我们都知道在使用域账户从客户机登录的使用是需要联系域控制器进行身份的验证的,有同学做过这样的实验,他把自己的域控制器全部暂停了(虚拟机),结果发现还能够使用域账户登录,感觉比较...
  • windowsxpwyd
  • windowsxpwyd
  • 2010年05月25日 11:21
  • 8822

独家解读:简单又强大的配置文件 Config 读写类

一、引言在项目过程中,难免会需要一个方便的配置文件读写类,它可以像游戏的存档文件一样,记录着我们当前项目的配置信息,以至于方便我们每次初始化运行的时候可以从这个配置文件读取上一次的配置信息,当然也可以...
  • u012814856
  • u012814856
  • 2017年09月14日 11:10
  • 452

配置信息存文件还是数据库

自己搭建后台过程中,我们把一些网站的基本信息配置项放在哪里呢?这是一个值得思考的问题。接下来,我们就来探讨一下 目前是有2种方法: 1.保存在文件中。数据存储在文件,主要考虑I/O,数据量的大...
  • weixin_40279966
  • weixin_40279966
  • 2018年01月15日 20:42
  • 25

定时任务(从配置文件中读时间)

//获取配置文件 public class Config extends Properties{ public static Config config =null; public Config() ...
  • yizhizou123ABC
  • yizhizou123ABC
  • 2015年04月14日 17:08
  • 698

重写Spring的PropertyPlaceholderConfigurer,从数据库加载配置数据

1,applicationContext.xml 用自定义扩展类DataBasePropertyPlaceholderConfigurer替换Spring的PropertyPlaceholderCon...
  • zhangzikui
  • zhangzikui
  • 2016年09月14日 13:06
  • 1949

Hibernate不同配置文件读取方式

(1)hibernate.cfg.xml(默认)//用默认的配置文件创建并初始化一个实例Configuration config=new Configuration().configure();//通...
  • junmine
  • junmine
  • 2006年08月11日 12:59
  • 1946

java读取zookeeper中的配置文件信息

public static void main(String[] args) { String connectString = "127.0.0.1:2181"; ...
  • hdblocal
  • hdblocal
  • 2017年09月20日 10:03
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从不同的配置文件中读取配置信息
举报原因:
原因补充:

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