JSPCN主页 | JSP空间 | 网站制作 | JSP下载 | JSP论坛 | JSP教程 | 关于JSPCN | 联系我们
JSP虚拟主机,jsp空间,java空间,java虚拟空间,详细请点击进入
做最专业的JSP中文网站 当前位置首页--JSP技术--JSP配置  
文章搜索:
关键字 标题
  
JSP中文网内容管理系统(JCMS)
JSP虚拟主机
网络笔记本
网摘,图片,笔记收藏
虚拟服务器

JSPCN文章目录分类
JSP配置[219]JSP基础[136]
中文问题[69]上传问题[27]
JAVABEAN[46]数据库[212]
文件操作[126]图片声音[17]
JSP其他[57]时间相关[16]
JAVAMAIL[72]STRUTS[144]
开发工具[28]教程系列[157]
JSP实例[89]
JAVA基础[421]APPLET[78]
JAVA网络[179]Applica[115]
Servlet[98]XML[163]
J2ME[257]J2EE[374]
考试相关[63]JAVA线程[90]
EJB[261]Swing[26]
Java API[141]声音图片[28]
异常处理[33]JAVA实例[290]
JAVA类[139]SUN[89]
Hibernate[6]JMX[8]
Spring[34]
本版推荐文章 
本版热点文章 
相关文章链接 
 
Java中配置信息的存取
作者:     文章来源:
访问次数:298次     加入时间:2007年04月07日
作者杨中科是CowNew开源团队JDBMonitor项目组的开发人员。
CowNew开源团队网站 http://www.cownew.com
论坛 http://www.cownew.com/newpeng/
转载请注明此版权信息

我们经常需要将我们的程序运行中的一些信息(比如在选项对话框中的设置)记录下来,以做便再次运行的时候不用再重写填写这些数据。这对改善软件的人机可用性方面是很有用的。但是让人失望的是,现在很多Java开源软件在这一点做的很不好,每次运行都要用户去填写那些配置文件。做为最好用的数据库监控、日志工具,JDBMonitor在这方面做的是非常好的,以它的Swing界面监视器和数据库日志记录查询窗口中所有的配置信息(例如远程服务器地址、端口、数据库名称、JDBC驱动等等)都是被保存的,当再次运行的时候程序会自动加载这些配置信息,所以使用起来相当方便。
我们接下来就来分析一下JDBMonitor是如何实现的。JDBMonitor的二进制jar包和源代码都可以从 http://www.cownew.com 下载得到。
保存加载配置文件有多种方式,比如xml文件、properties文件等,采用这些保存方式的一个问题就是如果程序是以jar,war 包等方式发布的那么这些配置文件就不能放在包中,因为包中的文件是不能在运行时改动的,只能放在磁盘的文件中,但是放在磁盘的文件中又很容易出现因为操作系统的差异、权限等问题造成程序的问题。JDBMonitor采用的则是JDK中的Preferences类来避免这些问题。
JDK1.4中提供了Preferences类,在java.util.prefs包里面。Preferences类在不同的平台中有不同的实现方式。比如在Windows平台中,Preferences是将数据保存在注册表中的。

为了区分不同的应用程序的参数项,在建立Preferences时要指定一个节点路径。
Preferences是一个抽象类,提供了一系列静态方法和抽象方法来操作参数项:
 Preferences userData = Preferences.userNodeForPackage(this); //得到用户配置节点
 Preferences sysData = Preferences.systemNodeForPackage(this); //得到系统配置节点。
比如在windows中Preferences.userNodeForPackage代表得到 HKEY_CURRENT_USERSoftwareJavaSoftPrefs下的相对路径
Preferences.systemNodeForPackage代表得到  HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefs下的相对路径

Preferences的读取、存储是非常容易的,存储只要调用put***方法就可以,读取调用get***即可,不同的put,get方法分别用于存取不同的数据类型,详细信息可以参考JavaDoc。
以JDBMonitor的Swing界面监视器的连接对话框为例为大家分析,打开com.cownew.JDBMonitor.listenerImpl.sckListenerClient.ConnectConfigDialog,saveConfig()和loadConfig()分别就是保存和读取参数用了,这两个方法会在超类中被调用。可以看到代码实现非常简单:
protected void saveConfig()
 {
  Preferences prefer = Preferences.userNodeForPackage(getClass());
  prefer.put(HOST_NAME,getHostName());
  prefer.putInt(PORT,getPort());
 }
 
 protected void loadConfig()
 {
  Preferences prefer = Preferences.userNodeForPackage(getClass());
  setHostName(prefer.get(HOST_NAME,""));
  setPort(prefer.getInt(PORT,9527));
 }

Copyright © 2002-2005 JSPCN.net. All rights reserved.
JSP中文网    备案序号:蜀ICP备05001583号
成都恒海科技发展有限公司    成都市一环路南二段6号新瑞楼三楼8号