Java中配置文件的三种配置位置及读取方式

时间:2023-01-31 17:28:24

XML 和properties

properties:

1、存放于src根目录下

//获取到同包下的资源文件,将其转换成流对象
//InputStream is= PropertiesDemo.class.getResourceAsStream("/db.properties");
//需要专门的工具类来讲流中的数据
Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

2、与读取配置文件的类在同一包

//InputStream is= PropertiesDemo.class.getResourceAsStream("db.properties");

Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

3、存放在WEB-INF(或其子目录下)

//新建一个servlet类

ServletContext context=request.getServletContext();
InputStream is=context.getResourceAsStream("/WEB-INF/db.properties");
Properties p=new Properties();
p.load(is);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));

  

4. dom4j+xpath解析xml文件

InputStream is = XMLDemo.class.getResourceAsStream("students.xml");
// SAXReader saxReader = new SAXReader();
// Document doc = saxReader.read(is);
// System.out.println(doc.asXML());
// // xpath
// List<Element> stueles=doc.selectNodes("/students/student");
// for (Element element : stueles) {
//// if ("s002".equals(element.attributeValue("sid"))) {
//// System.out.println(element.asXML());
// Element name=(Element)element.selectSingleNode("name");
// System.out.println(name.asXML());
// System.out.println(name.getText());
// // }
// }
// Element stuele =(Element) doc.selectSingleNode("/students/student[@sid='s001']");
// System.out.println(stuele.asXML());

  

package com.lingerqi.demo;

import java.io.InputStream;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /**
* 解析指定路径下的资源文件(dom4j)
*
* @author xyls
*
*/
public class XMLDemo { public static void main(String[] args) throws Exception { InputStream is = XMlDemo.class.getResourceAsStream("config.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(is);
List<Element> stueles = doc.selectNodes("/config/action");
for (Element element : stueles) {
Element forward = (Element) element.selectSingleNode("forward");
String type = element.attributeValue("type");
String path = element.attributeValue("path");
// if (path.equals("/loginAction")) {
// 2、获取第二个action中的type的值
// System.out.println(type);
// }
// 1、获取所有action中的type的值
// System.out.println(type);
// String fpath=forward.attributeValue("path"); // System.out.println(type);
if (element.attributeValue("path").equals("/loginAction")) {
List<Element> ford = (List<Element>) element.selectNodes("forward");
for (Element element2 : ford) {
String fpath = forward.attributeValue("path");
// 3、获取第二个action的所有forward的path
System.out.println(fpath);
}
}
if (path.equals("/loginAction")) {
// 4、获取第二个action的第二个forward的path
// System.out.println(fpath);
}
}
// if (path.equals("/loginAction")) {
// 4、获取第二个action的第二个forward的path
// System.out.println(fpath);
// }
}
}

  

Java中配置文件的三种配置位置及读取方式的更多相关文章

  1. java中 this 的三种用法

    Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...

  2. CentOS中JDK的三种配置方法

    第一种方法(相对稳妥): 使用yum直接安装,在root用户下执行 "yum install java-openjdk-*" 第二种方法(最为稳妥): 前往'https://www ...

  3. Java中对象的三种状态

    Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态. 状态二:可复活态:从根节点开 ...

  4. java中线程的三种实现方式

    一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...

  5. Java中Map的三种遍历方法

    Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历.   告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...

  6. Java中Singleton的三种实现方式解析

    一.什么是Singleton? <设计模式>的作者.Eclipse和 Junit 的开发者 Erich Gamma 在它的理论体系中将 Singleton 定义为仅仅被实例化一次的类.在当 ...

  7. SpringMVC中HandlerMapping的三种配置方式

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-/ ...

  8. JAVA中this的三种用法的详解

    this关键字必须放在非静态方法里面 this关键字代表自身,在程序中主要的使用用途有以下几个方面: ? 使用this关键字引用成员变量 ? 使用this关键字在自身构造方法内部引用其它构造方法 ? ...

  9. 正则表达式在Java中应用的三种典型场合:验证,查找和替换

    正则式在编程中常用,总结在此以备考: package regularexp; import java.util.regex.Matcher; import java.util.regex.Patter ...

随机推荐

  1. 基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

    在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这个Bootstrap框架的各个主要方面的内容,总体来说基本达到了一个稳定的状态,随着时间的推移可 ...

  2. 在Entity Framework 4&period;0中使用 Repository 和 Unit of Work 模式

    [原文地址]Using Repository and Unit of Work patterns with Entity Framework 4.0 [原文发表日期] 16 June 09 04:08 ...

  3. web设计经验&lt&semi;三&gt&semi;值得你深入了解的交互设计5大支柱

    随着单页式设计和移动端的兴起,网页中的交互设计越来越重要了.为了打造流畅而可靠的用户体验,你需要对交互设计有更加深入的了解. 正如同我们在<交互设计最佳实践(卷1)>中所述,要做好交互设计 ...

  4. 暑假集训&lpar;4&rpar;第六弹——— 组合(poj1067)

    题意概括:上一次,你成功甩掉了fff机械兵.不过,你们也浪费了相当多的时间.fff团已经将你们团团包围,并且逐步 逼近你们的所在地.面对如此危机,你不由得悲观地想:难道这acm之路就要从此中断?虽然走 ...

  5. bzoj1391

    很像最大权闭合子图的题目s向每个工作连边,流量为收益每个工序,由工作i向对应机器连边,流量为租用费每个机器向t连边,流量为购买费显然跑最小割,ans=总收益-mincut ; type node=re ...

  6. IE的documentMode属性

    参看下面链接:<IE的documentModeshuxing>

  7. 说说关于php内置函数curl&lowbar;init&lpar;&rpar;

    昨天在我本地的项目,调试时碰到无法识别curl_init()方法,网上查了查才知道是我本地的php.ini文件里没加载上,完了把extension=php_curl.dll前面的;去掉后就好了,注意一 ...

  8. onScrollChanged&lpar;&rpar;

    转载请标明出处:http://www.cnblogs.com/tangZH/p/8428100.html  onScrollChanged里面有四个参数 @Overrideprotected void ...

  9. 最少拦截系统 HDU - 1257

    某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于 ...

  10. http缓存详解,http缓存推荐方案

    前言 通过本文,你将了解到http缓存机制是怎样的,no-cache到底有没有缓存,地址栏回车,F5,ctrl+F5的区别,以及当下较为推荐的缓存方案等. 自从和前端组的同事一起整了个前端扫盲计划,想 ...