Java中配置文件的三种配置位置及读取方式
1、同胞下的资源文件
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
// 将当前类同包下的db.properties资源文件转换成输入流
InputStream in = PropertiesDemo.class.getResourceAsStream("db.properties");
Properties p = new Properties();
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
}
2、将所有的资源文件放在根目录下
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
//将当前类同包下的db.properties资源文件转换成输入流
// /(斜杠)代表根目录
InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties");
Properties p = new Properties();
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
}
3、编译后所有的资源文件都会自动进WEB-INF下
WEB-INF(或其子目录下)
public class PropertiesServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1160110259263103368L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = req.getServletContext();
InputStream in = context.getResourceAsStream("/WEB-INF/db.properties");
Properties p = new Properties();
p.load(in);
System.out.println(p.getProperty("uname"));
System.out.println(p.getProperty("upass"));
}
附上:eclipse在创建Web项目的时候忘记勾选创建web.xml
如果在javaEE开发过程中,使用eclipseEE创建Web项目的时候,在最后忘记勾选创建web.xml
这时候,可以右击你创建的项目名 ---->Java EE Tools---->Generate Deployment Descriptor Stub
这时候就成功创建了web.xml
XML的作用
配置
*.properties
*.xml
数据交换
xml
webservice
json
注意:
*.properties文件
key=value
# 注释
Properties.load(in)
dom4j+xpath解析xml文件
dom4j:Java开源的项目
DOM由节点组成
Node
元素节点
属性节点
文本节点
document.selectNodes(xpath);//查一组
document.selectSingleNode(xpath);//查单个
xpath
/ 定位路径 在系统中建一个文件叫document/students/student/sid|name
@ 属性
students.xml
properties文件的解析方式有java.util.properties这个类来完成
xml文件:应该有一个工具类来完成
jdk/jdom
sax解析 由上往下解析
dom4j解析 由外到内解析
Dom4j案例一:
package com.zking.xml.parse;
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 XmlParseDemo {
public static void main(String[] args) throws DocumentException {
InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml");
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(in);
//System.out.println(doc.asXML());
List<Element> stuEles = doc.selectNodes("/students/student");
for (Element stuEle : stuEles) {
if("s003".equals(stuEle.attributeValue("sid"))) {
Element nameEle = (Element) stuEle.selectSingleNode("name");
//System.out.println(nameEle.asXML());
System.out.println(nameEle.getText());
}
}
}
}
案例二:如果知道学生的ID直接找出对应的学生
package com.zking.xml.parse;
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 XmlParseDemo {
public static void main(String[] args) throws DocumentException {
InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml");
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(in);
//stuEleS003 : 学生学号 @ : 属性
Element stuEleS003 = (Element) doc.selectSingleNode("/students/student[@sid='s003']");
System.out.println(stuEleS003.selectSingleNode("name").getText());
}
}