依旧是它~~~
内容从这里就开始了……
一 、Java中三种配置位置及读取方式
1、Properties读取配置文件
①、*.properties文件以键值对的方式存储数据;
②、使用Properties类读取配置文件;
2、配置位置
①、存放于同一类的包下,不加 / 代表同类名包下的相对路径;
②、存放于根目录下, / 代表获取src根目录的绝对路径
package com.mwy.xml;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 配置文件存在位置
* 其中properties文件就是资源文件中的一种
*1、同包
*2、根目录下
*3、WEB-INF
*/
public class Test_1 {
public static void main(String[] args) throws IOException{
//InputStream in = Test_1.class.getResourceAsStream("db.properties");//同包
InputStream in = Test_1.class.getResourceAsStream("/db.properties");
Properties p=new Properties();
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
}
}
别忘了加 / ,不然会报错的;
③、存放于WEB-INF目录下
二、dom4j的使用
1、Document有节点(Node)组成:元素=节点、属性、文本等;
2、Node(节点) Element(元素) 区别 getText();
3、selectNodes()获取节点下所有子节点;
4、selectSingleNode()获取单个节点信息;
5、attributeValue():获得指定对象的属性值;
例题:获得小王这个人名
students.xml中:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student sid="s001">
<name>小明</name>
</student>
<student sid="s002">
<name>小芳</name>
</student>
<student sid='s003'>
<name>小王</name>
</student>
</students>
解析:
package com.mwy.xml;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class Test_3 {
public static void main(String[] args) throws DocumentException {
//获得小王这个人名
/**
* 1、读取到students.xml的xml串内容
* 2、解析到所有的student标签的内容
* 3、获得到所有student标签的sid
* 4、当sid=s003的时候,获取Name标签内容
*/
InputStream in = Test_3.class.getResourceAsStream("students.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
//System.out.println(doc.asXML());//读出界面所有的内容
//selectNodes:获得对应节点对象,返回List
List<Element> list = doc.selectNodes("/students/student");
for (Element element : list) {
//System.out.println(element.asXML());//读出所有的student
//attributeValue:获得指定对象的属性值
String sid = element.attributeValue("sid");//
//System.out.println(sid);//读出所有的sid
if("s003".equals(sid)) {
//selectSingleNode获得对应节点对象,返回单个元素对象
Element name =(Element) element.selectSingleNode("name");
System.out.println(name.getText());
}}
}
}
三、xpath的使用
xpath类似数据库中的select语句;
1、xpath语法:
①、/(定位路径);
②、@(获取属性);
package com.mwy.xml;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
//获得小王这个人名
public class Test_4 {
public static void main(String[] args) throws DocumentException {
InputStream in = Test_4.class.getResourceAsStream("students.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
Element name =(Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
System.out.println(name.getText());
}
}
四、问题:
1、获得所有action中的type的值;
2、获得第二个action中的type的值;
3、获得第二个action的所有forward的path;
4、获得第二个action的第二个forward的path;
package com.mwy.xml;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test_5 {
public static void main(String[] args) throws DocumentException {
//1、获得所有action中的type的值
InputStream in = Test_5.class.getResourceAsStream("config.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
//selectNodes:获得对应节点对象,返回List
List<Element> list = doc.selectNodes("/config/action");
for (Element element : list) {
//System.out.println(element.asXML());//读出所有的action
String type = element.attributeValue("type");
System.out.println(type);
}
System.out.println("------");
//2、获得第二个action中的type的值
//①
Element type =(Element) doc.selectSingleNode("/config/action[@path='/loginAction']");
String type1 = type.attributeValue("type");
System.out.println(type1);
System.out.println("^^^^^^^^^");
//②
Element typ=(Element)list.get(1);
String typ1 = typ.attributeValue("type");
System.out.println(typ1);
System.out.println("------");
//3、获得第二个action的所有forward的path
List<Element> list1 = doc.selectNodes("/config/action[@path='/loginAction']/forward");
for (Element element : list1) {
//System.out.println(element.asXML());//读出所有的forward
String path = element.attributeValue("path");
System.out.println(path);
}
System.out.println("------");
//4、获得第二个action的第二个forward的path
//①
Element name =(Element) doc.selectSingleNode("/config/action[@path='/loginAction']/forward[@name='success']");
String path1 = name.attributeValue("path");
System.out.println(path1);
System.out.println("^^^^^^^^^");
//②
Element path=(Element)list1.get(1);
String pat = path.attributeValue("path");
System.out.println(pat);
}
}
得到结果:
结束啦~~~
下次再见~~~