问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何读取properties变量

发布网友 发布时间:2022-04-30 11:08

我来回答

1个回答

热心网友 时间:2022-04-10 15:23

Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了 当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有Propertiesy这样的类专门处理这样的属性配置文件).使用XML作为Java的配置文件有很多好处,从Tomcat的安装配置文件和J2ee的配置文件中,我们已经看到XML的普遍应用,让我们也跟随流行趋势用XML武装起来. 现在关键是如何读取XML配置文件有好几种XML解析器:主要有DOM和SAX ,这些区别网上文章介绍很多. 在apache的XML项目组中,目前有Xerces Xalan Cocoon几个开发XML相关技术的project.Tomcat本身使用的是 Sun 的 JAXP,而其XSL Taglib project中使用Xerces解析器. 好了,上面都是比较烦人的理论问题,还是赶快切入XML的配置文件的读取吧. 在我们的程序中,通常要有一些根据主机环境确定的变量.比如数据库访问用户名和密码,不同的主机可能设置不一样.只要更改XML配置文件,就可以正常运行. localhost sqlname username password 上面这个myenv.xml配置文件一般是放在tomcat的WEB-INF/classes目录下. 我们编制一个Java程序直接读取,将dbhost dbuser dbpassword提取出来供其他程序访问数据库用. 目前使用SAX比较的多,与DOM主要区别是 SAX是一行一行读取XML文件进行分析,适合比较大文件,DOM是一次性读入内存,显然不能对付大文件.这里我们使用SAX解析,由于SAX解析器不断在发展,网上有不少文章是针对老版本的.如果你使用JDK1.4 ,可以参考 使用SAX处理XML文档 一文.这里的程序是根据其改进并且经过实践调试得来的. 对上面myenv.xml读取的Java程序: import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.SAXException; import java.util.Properties; //使用DefaultHandler的好处 是 不必陈列出所有方法, public class ConfigParser extends DefaultHandler { ////定义一个Properties 用来存放 dbhost dbuser dbpassword的值 private Properties props; private String currentSet; private String currentName; private StringBuffer currentValue = new StringBuffer(); //构建器初始化props public ConfigParser() { this.props = new Properties(); } public Properties getProps() { return this.props; } //定义开始解析元素的方法. 这里是将中的名称xxx提取出来. public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { currentValue.delete(0, currentValue.length()); this.currentName =qName; } //这里是将之间的值加入到currentValue public void characters(char[] ch, int start, int length) throws SAXException { currentValue.append(ch, start, length); } //在遇到结束后,将之前的名称和值一一对应保存在props中 public void endElement(String uri, String localName, String qName) throws SAXException { props.put(qName.toLowerCase(), currentValue.toString().trim()); } } 上面的这个解析程序比较简单吧 其实解析XML就是这么简单. 现在我们已经将dbhost dbuser dbpassword的值localhost sqlname username password提取了出来.但是这只是在在解析器内部,我们的程序还不能访问.需要再编制一个程序. import java.util.Properties; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import java.net.URL; public class ParseXML{ //定义一个Properties 用来存放 dbhost dbuser dbpassword的值 private Properties props; //这里的props public Properties getProps() { return this.props; } public void parse(String filename) throws Exception { //将我们的解析器对象化 ConfigParser handler = new ConfigParser(); //获取SAX工厂对象 SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(false); factory.setValidating(false); //获取SAX解析 SAXParser parser = factory.newSAXParser(); //得到配置文件myenv.xml所在目录. tomcat中是在WEB-INF/classes //下例中BeansConstants是用来存放xml文件中配置信息的类,可以自己代替或定义 URL confURL = BeansConstants.class.getClassLoader().getResource(filename); try { //将解析器和解析对象myenv.xml联系起来,开始解析 parser.parse(confURL.toString(), handler); //获取解析成功后的属性 以后 我们其他应用程序只要调用本程序的props就可以提取出属性名称和值了 props = handler.getProps(); }finally{ factory=null; parser=null; handler=null; } } } 由于我们的XML文件是使用最简单的形式 ,因此解析器相对简单,但是这已经足够对付我们的配置文件了.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
妇科的止血药有哪些 妇科用的止血药有哪些 妇科止血药的功效 人艰不拆是啥意思 汉酱51 度酱香型白酒多少钱?味道怎么样? 穿凉鞋可以穿袜子吗?凉鞋发黄怎么变白? 爱奇艺vip投屏限制怎么办 爱奇艺vip投屏视频限制怎么解决 支付宝怎样解除关联的支付宝账号? 剑圣叫什么名字 ...政策?这个政策的目的是什么?会对经济有什么影响? java排序文件路径问题 XML是如何工作的? java中dom4j解析xml文件怎么获取节点属性 为什么我支付宝的网商贷只能还不能借了,怎么办? java如何读取xml节点元素值? 网商贷怎么突然显示额度已用完?只能还款,不能借款了? js中如何引用其他方法中的值 jsp页面 名字 这个cookie获取为什么不对呢? 为什么currentname1 是undefined? pans视频花絮 208 哪个网站有PANS python3.6程序运行出错,下面是提示 Traceback (most recent call last... FTP http://liupanshui.66zhuang.com 里的FTP是什么意思? 有什么样学习软件下载初中? 一台pansuioac牌液晶电视开机屏幕亮一下显示的是开机见面,后面屏幕就暗了,有声音没有图像 谁有钢琴《摇篮曲 》弗利斯的mp3格式或者视频下载地址的 世界第一dj现场 103分钟的那个 不是视频 是歌的下载地址 新概念英语第一二册所有教学视频与教学课件的下载地址! 请问大佬有桃李花歌2015年上映的由 柳承龙主演的高清视频在线观看资源吗 求金鹰老师主讲FLASH动画设计师培训视频教程200集打包下载地址 java中如何读取xml中数据。多节点的。给我一个例子,谢谢。 在Java中如何读取XML字符串的元素值 oc读取mysql数据库数据完整代码? 在actionscript3.0中的计时问题 jquery赋值 通过什么方法获得用户名? 新手求助,无法调出pycharm的console-CSDN论坛 帮忙翻译英语.(和老外聊天) commons-fileupload-1.2.1.jar这个包是做什么用的 mysql怎么按 in 里面 id 的顺序排列 成为教师之后的好处,你了解吗? 学习教育学对做教师有什么好处 468÷3等于多少怎么列竖式 当一名教师的好处和坏处是什么? 468-34-66的简便计算是多少? 当小学老师有什么好处? 4月11日武昌到广州的火车时刻表 做教师的好处 468乘以157减57乘468的简便方法怎么算? (30—2x)(20—x)=468解题过程