本期的主要内容:
这期内容需要导入两个架包并Build Path:
一、Java中配置文件的三种配置位置及读取方式
目的:解决了变动的数据进行配置,把变动的部分做成可配置的
1.同包
也就是资源文件与类在同一个包内
资源文件:
类:
输出的结果为:
2.跟目录下
改变了以上资源文件的路径,把资源文件专门放在一个源文件包内,方便了做项目
如何新建源文件包:
①、鼠标右键src
②、点击new,找到Source Folder,若没有,则选择Other
③、直接搜索
若使用同包的方法操作,则会报错,空指针错误:
操作只是与同包有一点区别:
/指的是跟,也就是src
3.WEB-INF下
WEB-INF为安全目录,凡是写在这里面的文件不能直接被外界访问到
如:可以通过配置servlet间接来访问这里面的文件:
二、dom4j的使用
举例子:想要得到xml文件中的小王这个人名
思路:
①.获取到students.xml的xml串内容
②.解析获取到所有的student标签的内容
③.获取到所有student标签的sid
④.当sid=s003的时候,获取Name标签内容
xml文件:
1.selectNodes:获取对应节点对象,返回list
得到结果:
2.attributeValue:获取指定对象的属性
接着:
List<Element> stuEles = doc.selectNodes("/students/student");
for (Element element : stuEles) {
String sid = element.attributeValue("sid");
System.out.println(sid);
}
就能获得student标签的所有sid:
3.selectSingleNode:获取对应节点对象,返回单个元素对象
4.getText
最终得到结果:
三、xpath的使用
例子:找xml中的小芳
public class Demo3 {
public static void main(String[] args) throws Exception {
InputStream in = Demo3.class.getResourceAsStream("students.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
Element nameEle = (Element)doc.selectSingleNode("/students/student[@sid='s002']/name");
System.out.println(nameEle.getText());
}}
四、以下例题:
资源文件:
第一题:
public class Demo5 {
public static void main(String[] args) throws Exception {
InputStream in = Demo5.class.getResourceAsStream("config.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> elem=doc.selectNodes("/config/action");
for (Element element : elem) {
String type=element.attributeValue("type");
System.out.println(type);
}}}
第二题:
public class Demo5 {
public static void main(String[] args) throws Exception {
InputStream in = Demo5.class.getResourceAsStream("config.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> element=doc.selectNodes("/config/action");
String type=element.get(1).attributeValue("type");
System.out.println(type);
}}
第三题:
public class Demo5 {
public static void main(String[] args) throws Exception {
InputStream in = Demo5.class.getResourceAsStream("config.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> element=doc.selectNodes("/config/action");
Element element1=element.get(1);
List<Element> element2=element1.selectNodes("forward");
for (Element element3 : element2) {
String path=element3.attributeValue("path");
System.out.println(path);
}}}
第四题:
public class Demo5 {
public static void main(String[] args) throws Exception {
InputStream in = Demo5.class.getResourceAsStream("config.xml");
SAXReader sr=new SAXReader();
Document doc = sr.read(in);
List<Element> element=doc.selectNodes("/config/action");
Element element1=element.get(1);
List<Element> element2=element1.selectNodes("forward");
String path=element2.get(1).attributeValue("path");
System.out.println(path);
}}