Xpath是一个独立的一个路径语言,主要的目的是为了查找路径中的元素。 那么DOM4J默认支持Xpath的路径查找。 常用的方法有以下的两种: selectNodes(“xpath”) ? 查询指定路径的所有的元素 selectSingleNode(“xpath”) ? 查询指定路径的第一个元素 ? 常用的Xpath路径写法 /AAA 指定从XML文档的根开始写路径 //BBB 指定从整个XML中搜索满足的元素名 /AAA/CCC/DDD/* 指定路径下所有的元素 //* 指定获取所有的元素 /AAA/BBB[1] 指定路径下的第一个元素,一定是以1开始的 /AAA/BBB[last()] 指定路径下的最后一个元素 //@id 指定要获取的属性元素 //BBB[@id] 指定带属性的元素 //BBB[@id=‘b1‘] 指定属性值的元素 //BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]
案例二: 使用DOM4J+Xpath实现用户登陆和注册
代码实现:
1. 编写一个用于用户登陆的信息文件users_login.xml <?xml version="1.0" encoding="UTF-8"?> <users> <user name="jack" password="root"/> </users>
2. 登陆的业务方法 // 提供一个用于登陆的方法 public static User login(String name, String password, File file) throws Exception { Document doc = getDoc(file); Node node = doc.selectSingleNode("/users/user[@name=‘" + name + "‘ and @password=‘" + password + "‘]"); User user = null; if (node != null) { String name_value = node.valueOf("@name"); String password_value = node.valueOf("@password"); user = new User(name_value, password_value); } return user; }
3. 注册的业务逻辑方法 // 提供一个业务逻辑存储一个User public static void registUser(User user,File file)throws Exception{ Document doc = getDoc(file); Element root = doc.getRootElement(); Element new_user = DocumentHelper.createElement("user") .addAttribute("name", user.getName()) .addAttribute("password", user.getPassword()); root.add(new_user); // 将document对象持久化到文件 XMLWriter writer = new XMLWriter(new OutputStreamWriter( new FileOutputStream(file),"UTF-8")); writer.write(doc); writer.close(); }
比较: DOM VS SAX VS DOM4J+XPATH
DOM将XML文件以DOM树的方式装载进内存进行解析。Node、 Element、Document、Text、Attr等。
缺点: 不能解析大数据的XML文件。
优先: 对于XML可以进行任何操作。
SAX将XML的解析分为不同的时间段,因此需要创建开发者自己的事件处理器类。
startDocument()/endDocument startElement()/endElement() characater()
缺点: 只能获取元素。
优先: 采用事件机制速度快。
DOM4J+XPATH
DOM4J+XPATH结合了DOM和SAX各自的优势并摈弃了两者的缺点。
总结主来一条:优先使用DOM4J+XPATH
问题: 1. 使用DOM存储一个节点,但是xml文件中连同根元素都会消失。 就是没有将DOM树写回XML文件。new DomSource(dom) 2. 在指定的位置之前插入元素。 调用insertBefore()方法的时候应该调用的是直接父类的该方法。
总结 掌握各种解析XML的原理和思路。 DocumentBuilderFactory/DocumentBuilder TtransformerFactory/ Ttransformer SaxPaserFactory/SaxParser SaxReader/XMLWriter/DocuementHelper/Docuement
Web服务器简介
Web服务器是一个安装了web服务器软件的计算机。Web服务器软件是可以对外提供访问自己管理的文件夹的资源的一个软件。
Web服务器软件主要的任务是获取用户的请求资源,根据资源的名字在自己管理的网站中查找资源并使用输入流读取到该资源数据,并以输出流的方式发送给客户端浏览器。Web服务器软件的底层采用的Socket编程。
Web 服务器软件 |
厂商 |
IIS |
微软 |
Tomcat |
Apache 开源的服务器 |
Web Logic |
BEA |
Web Sphere |
IBM |
JBoss |
RedHat |
1 Web的概念
Web即网页。所以要开发一个网站需要从开发网页开始。HTML+CSS+JavaScript
2 静态和动态的概念
静态网页即每次查看页面的源码如果不可变就是静态网页。
动态网页即每次查看页面的源码如果可变就是静态网页。
HTML+CSS+JavaScript+Flash à 静态的
JSP、Servlet技术 à 动态的
3 软件结构的概念
软件结构就是软件软件后部署软件的一种方式。
CS结构: Client/Server 客户端/服务器 如: QQ
要下载安装客户端程序。而且数据需要发送给服务器。
缺点:升级
BS结构 Browser/Server 浏览器/服务器 如: Web QQ
不需要额外的下载客户端,只需要一个浏览器即可。
优点: 不需要安装且无需升级
网站就属于BS结构。瘦客户端程序。
Tomcat服务器
Tomcat是apache开源组织使用java语言开发的,因此运行的时候JRE。但是开发者可以直接配置JDK。
1.下载
http://www.apache.org Tomcat
2.安装
直接解压(绿色版)
3. 配置
java_home=JDK的根目录
4. 测试
进入安装的bin目录àstartup.bat
打开浏览器输入http://127.0.0.1:8080/ 可见下图即可