-
掌握 properties 配置文件的三种配置位置及读取方式(重点)
-
了解XML的作用
-
熟练使用dom4j + xpath解析xml文件(重点)
-
数据库连接池技术(自学)
JDBC 数据库连接池技术 PoolC3P0
druid
H
debug log4j日志功能
1. XML的作用
1.1 传输数据
xml
webservice(比如天气、手机…)
json
http+json
1.2 存储数据(配置文件,如web.xml)
*.properties
*.xml
2. Java中 配置文件的三种配置位置及读取方式
2.1 配置的两种形式:
XML
*.properties(属性文件)
2.2 存放位置
2.2.1 src根目录下
Xxx.class.getResourceAsStream("/config.properties");
2.2.2 与读取配置文件的类在同一包
Xxx.class.getResourceAsStream("config.properties");
2.2.3 WEB-INF(或其子目录下)
ServletContext application = this.getServletContext();
InputStream is = application.getResourceAsStream("/WEB-INF/config.properties");
注1:*.properties文件
key=value
#注释
Properties.load(is)加载properties文件。
properties里面存放的是配置信息(数据)。
3. dom4j + xpath 解析xml文件
xml解析一般分自带源生态的(效率低),另一种使用第三方读取解析(dom4j)。
3.1 dom4j:dom4j是java中一个优秀的开源框架,它提供了一组API用来解析xml文件。
优点:开源、轻量级、灵活、高性能、高效率、易维护。
常用于解析大型XML文档。
思想:将xml中所有元素(Element)称之为节点(Node),一个xml文件由N个节点组成。
DOM由节点组成:
Node分:元素节点(父)
属性节点(子)
文本节点(子)
方法:document.selectNodes(xpath); //查一组
document.selectSingleNode(xpath); //查单个
核心类:SAXReader
Document
3.2 xpath:path等同数据库的select语句。
/ 定位路径 在系统中建一个文件叫document/students/student/sid|name
@ 属性
示例:
/students 获得students根节点
/students/student 获得students根节点下面所有的student节点
/students/student[@sid='s003'] 获得students根节点下面student节点中sid属性等于s003的节点
/students/student[@sid='s003']/name 获得students根节点下面student节点中sid属性等于s003的节点下面的name节点
*4. 案例: *
//1. 加载xml文件
InputStream is = Demo2.class.getResourceAsStream("/students.xml");
SAXReader saxReader = new SAXReader();
//2. 转换成Document对象
Document document = saxReader.read(is);
//node节点、element元素,可直接将node转成element
//List<Elemenet> studentNodes = (List<Elemenet>)document.selectNodes("/students/student");
// 3. 获得指定元素路径下所有节点
List<Node> studentNodes = document.selectNodes("/students/student");
// 4. 遍历所有节点
for (Node studentNode : studentNodes) {
//将节点转换成元素
Element studentElement = (Element) studentNode;
// 获得元素中的sid属性值
// Attribute sidAttribute = studentElement.attribute("sid");
// 获得元素中属性的数据
// System.out.println(sidAttribute.getText());
// 获得元素中的sid属性值
String sid = studentElement.attributeValue("sid");
// 获得name的元素
Element nameElement = (Element) studentElement.selectSingleNode("name");
// 根据元素名获得数据
String name = nameElement.getText();
System.out.println(sid + "," + name);
}
// sid=s003学生的姓名
//String xpath = “/students/student[@sid=‘s003’]”;
//Element e = (Element) document.selectSingleNode(xpath);
//String name = e.selectSingleNode(“name”).getText();
//System.out.println(name);
String xpath = “/students/student[@sid=‘s003’]/name”;
Element e = (Element) document.selectSingleNode(xpath);
System.out.println(e.getText());