Java中配置文件的三种配置位置及读取方式
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中配置文件的三种配置位置及读取方式的更多相关文章
- java中 this 的三种用法
Java中this的三种用法 调用属性 (1)this可以调用本类中的任何成员变量 调用方法(可省略) (2)this调用本类中的成员方法(在main方法里面没有办法通过this调用) 调用构造方法 ...
- CentOS中JDK的三种配置方法
第一种方法(相对稳妥): 使用yum直接安装,在root用户下执行 "yum install java-openjdk-*" 第二种方法(最为稳妥): 前往'https://www ...
- Java中对象的三种状态
Java中的对象的三种状态是和垃圾回收紧密相关的,因此有必要深究. 状态一:可触及态:从根节点开始,可以搜索到这个对象,也就是可以访问到这个对象,也有人将其称为可达状态. 状态二:可复活态:从根节点开 ...
- java中线程的三种实现方式
一下记录下线程的3中实现方式:Thread,Runnable,Callable 不需要返回值时,建议使用Runnable:有返回值时建议使用Callable 代码如下所示: package com.f ...
- Java中Map的三种遍历方法
Map的三种遍历方法: 1. 使用keySet遍历,while循环: 2. 使用entrySet遍历,while循环: 3. 使用for循环遍历. 告诉您们一个小秘密: (下↓面是测试代码,最爱看 ...
- Java中Singleton的三种实现方式解析
一.什么是Singleton? <设计模式>的作者.Eclipse和 Junit 的开发者 Erich Gamma 在它的理论体系中将 Singleton 定义为仅仅被实例化一次的类.在当 ...
- SpringMVC中HandlerMapping的三种配置方式
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE beans PUBLIC "-/ ...
- JAVA中this的三种用法的详解
this关键字必须放在非静态方法里面 this关键字代表自身,在程序中主要的使用用途有以下几个方面: ? 使用this关键字引用成员变量 ? 使用this关键字在自身构造方法内部引用其它构造方法 ? ...
- 正则表达式在Java中应用的三种典型场合:验证,查找和替换
正则式在编程中常用,总结在此以备考: package regularexp; import java.util.regex.Matcher; import java.util.regex.Patter ...
随机推荐
- CVE-2019-0708-BlueKeep漏洞复现
环境 攻击机:Kali Linux IP:192.168.0.108 靶机:Windows Sever 7 SP1 旗舰版 IP:192.168.0.109 Exploit: https://gith ...
- 一文解读ARM架构 (转)
本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了a ...
- 字符串和id的转换方法
在项目中经常会遇到一个需求就是字符串和id的转换,比如标签和标签id.因为在存储系统里面存储字符串会比较浪费内存,而存储id会节省内存和提高效率. 问题分解 通过字符串获得id 通过id获得字符串 实 ...
- python 指定字符串位置查找
指定字符串位置查找 #指定字符查找 s = 'F:/my_pycharm/pycharm_project/CSV表格/10.csv' print(s.find('/')) # 2, 第一个/在2位置 ...
- Ambari 大数据集群管理
最近做了一个大数据项目,研究了下集群的搭建,现在将集群搭建整理的资料与大家分享一下!如有疑问可在评论区回复. 1前置配置 Centos7系统,每台系统都有java运行环境 全程使用root用户,避免安 ...
- 平方,立方,n次方,上标/下标
选种你需要的上标,如2,右键设置单元格格式:选择上标,确定即可: 最终效果:
- luoguP4343自动刷题机(二分标准题)
https://www.luogu.org/problem/P4343 参考博客:https://www.luogu.org/blog/ofnoname/solution-p4343 这真是一语点醒梦 ...
- Python常见异常及常用单词翻译
Python常见异常及常用单词意思 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportE ...
- Html学习之四(页面布局)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Web-babyphp
题目地址 http://web.jarvisoj.com:32798/ 首先先观察网页,点击about发现下面包含这些 看到GIT,那么基本可以明确这题有.git泄露,我们用GitHack来获取源码分 ...