数据库:XML,解析Dom4J
package com.itheima.util; import java.io.FileOutputStream;
import java.net.URL; import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; public class Dom4JUtil {
private static String xmlRealpath;
static{
ClassLoader cl = Dom4JUtil.class.getClassLoader();
URL url = cl.getResource("users.xml");
xmlRealpath = url.getPath();
} public static Document getDocument() throws Exception{
SAXReader reader = new SAXReader();
// return reader.read("src/users.xml");//错误
return reader.read(xmlRealpath);
}
public static void write2xml(Document document) throws Exception{
XMLWriter writer = new XMLWriter(new FileOutputStream(xmlRealpath), OutputFormat.createPrettyPrint());
writer.write(document);
writer.close();
}
}
package com.itheima.dao.impl; import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node; import com.itheima.dao.UserDao;
import com.itheima.domain.User;
import com.itheima.util.Dom4JUtil; public class UserDaoXmlImpl implements UserDao { public User findByUsername(String username) {
try {
Document doc = Dom4JUtil.getDocument();
// List<Node> userNodes = doc.selectNodes("//user");
Node node = doc.selectSingleNode("//user[@username='"+username+"']");
if(node==null)
return null; String xmlBirthday = node.valueOf("@birthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = df.parse(xmlBirthday); User user = new User(node.valueOf("@username"), node.valueOf("@password"), node.valueOf("@email"), birthday);
return user;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//<user username="abc" password="123" email="wzt@itcast.cn" birthday="1980-10-01"/>
public void save(User user) {
try {
Document doc = Dom4JUtil.getDocument();
Element root = doc.getRootElement();
root.addElement("user")
.addAttribute("username", user.getUsername())
.addAttribute("password", user.getPassword())
.addAttribute("email", user.getEmail())
.addAttribute("birthday", user.getBirthday().toLocaleString());
Dom4JUtil.write2xml(doc);
} catch (Exception e) {
throw new RuntimeException(e);
}
} public User findUser(String username, String password) {
try {
Document doc = Dom4JUtil.getDocument();
// List<Node> userNodes = doc.selectNodes("//user");
Node node = doc.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']");
if(node==null)
return null; String xmlBirthday = node.valueOf("@birthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = df.parse(xmlBirthday); User user = new User(node.valueOf("@username"), node.valueOf("@password"), node.valueOf("@email"), birthday);
return user;
} catch (Exception e) {
throw new RuntimeException(e);
}
} }
package com.itheima.dao.impl; import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List; import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node; import com.itheima.dao.UserDao;
import com.itheima.domain.User;
import com.itheima.util.Dom4JUtil; public class UserDaoXmlImpl implements UserDao { public User findByUsername(String username) {
try {
Document doc = Dom4JUtil.getDocument();
// List<Node> userNodes = doc.selectNodes("//user");
Node node = doc.selectSingleNode("//user[@username='"+username+"']");
if(node==null)
return null; String xmlBirthday = node.valueOf("@birthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = df.parse(xmlBirthday); User user = new User(node.valueOf("@username"), node.valueOf("@password"), node.valueOf("@email"), birthday);
return user;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//<user username="abc" password="123" email="wzt@itcast.cn" birthday="1980-10-01"/>
public void save(User user) {
try {
Document doc = Dom4JUtil.getDocument();
Element root = doc.getRootElement();
root.addElement("user")
.addAttribute("username", user.getUsername())
.addAttribute("password", user.getPassword())
.addAttribute("email", user.getEmail())
.addAttribute("birthday", user.getBirthday().toLocaleString());
Dom4JUtil.write2xml(doc);
} catch (Exception e) {
throw new RuntimeException(e);
}
} public User findUser(String username, String password) {
try {
Document doc = Dom4JUtil.getDocument();
// List<Node> userNodes = doc.selectNodes("//user");
Node node = doc.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']");
if(node==null)
return null; String xmlBirthday = node.valueOf("@birthday");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date birthday = df.parse(xmlBirthday); User user = new User(node.valueOf("@username"), node.valueOf("@password"), node.valueOf("@email"), birthday);
return user;
} catch (Exception e) {
throw new RuntimeException(e);
}
} }
package com.itheima.test; import static org.junit.Assert.*; import java.util.Date; import org.junit.Test; import com.itheima.domain.User;
import com.itheima.exception.UserHasExistException;
import com.itheima.service.BusinessService;
import com.itheima.service.impl.BusinessServiceImpl; public class BusinessServiceImplTest {
private BusinessService s = new BusinessServiceImpl();
@Test
public void testRegist() throws UserHasExistException {
User user = new User("wzhting", "123", "wzt@itcast.cn", new Date());
s.regist(user);
}
@Test(expected=com.itheima.exception.UserHasExistException.class)
public void testRegist1() throws UserHasExistException {
User user = new User("wzhting", "123", "wzt@itcast.cn", new Date());
s.regist(user);
}
@Test
public void testLogin() {
User user = s.login("wzhting", "123");
assertNotNull(user);
user = s.login("wzhting", "111");
assertNull(user);
user = s.login("asf", "111");
assertNull(user);
} }
package com.itheima.util;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.BeanUtils;
public class BeanUtil {
//把请求参数封装到指定的JavaBean中
public static <T> T fillBean(HttpServletRequest request,Class<T> clazz){
try {
T bean = clazz.newInstance();
BeanUtils.populate(bean, request.getParameterMap());
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
数据库:XML,解析Dom4J的更多相关文章
- XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...
- java之xml解析-dom4j
解析方式 XML 解析方式有很多种,但是常用的有两种,如下: DOM Document Object Model:把整个 XML 读到内存中,形成树状结构.整个文档为 Document 对象,属性为 ...
- java的XML解析(DOM4J技术)
DOM4J技术解析XML文件 一,XML简介 xml (可扩展标记语言) 全称: Extended Markup Language 可扩展的含义:允许程序员按照自己的想法去扩展新的标签 注意:但是扩 ...
- XML解析-Dom4j的DOM解析方式更新XML
Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...
- Java数据库编程、XML解析技术
数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...
- Java xml 操作(Dom4J修改xml + xPath技术 + SAX解析 + XML约束)
1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...
- Java数据库编程及Java XML解析技术
1.JDBC概述 A. 什么是JDBC? Java DataBase Connectivity:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成.通过这些类和接口 ...
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- 【Java】XML解析之DOM4J
DOM4J介绍 dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包 ...
随机推荐
- An Introduction to the Basics of Modern CSS Buttons
https://www.sitepoint.com/modern-css-buttons/
- vb6 使用msxml2.serverxmlhttp 请求HTTP
Private Sub Command1_Click() Command1.Enabled = False GetHtmlStr Text1 End Sub Private Sub GetHtmlSt ...
- IntelliJ IDEA教程之如何clean或者install Maven项目
一.前言 Eclipse中如果我们想clean或者install工程,我们只需要右键工程,然后找到run->Maven install 或者run->Maven clean就可以了,但是I ...
- JavaEE笔记(七)
Struts获取如何获取请求响应和回话 //获取HttpServletRequest HttpServletRequest request = ServletActionContext.getRequ ...
- 北京Uber优步司机奖励政策(4月25日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 【转载】COM 组件设计与应用(十三)——事件和通知(VC6.0)
原文:http://vckbase.com/index.php/wv/1243.html 一.前言 我的 COM 组件运行时产生一个窗口,当用户双击该窗口的时候,我需要通知调用者: 我的 COM 组件 ...
- 基于Vue的弹框实例
看到博客的人,请养成写博客的习惯,不会不会,就怕曾经会过,现在想不起来了,一起加油.................... 让学习真的成为一种习惯,同时要注意身体 <!DOCTYPE html ...
- SQL 上线平台(内含全部完整资料)
为了让 DBA 从日常繁琐的工作中解放出来,通过 SQL 自助平台,可以让开发自上线,开发提交 SQL 后就会自动执行并返回执行结果,无需 DBA 的再次审核,从而提升上线效率,有利于建立数据库开发规 ...
- Docker 创建虚拟机并且远程链接
快读创建虚拟机 使用我编辑的镜像(688M) docker run -itd --name=test03 -p 5523:22 registry.cn-beijing.aliyuncs.com/act ...
- centos7 安装jenkenis
安装Java 看到当前系统Java版本的命令: java -version 如果显示Java版本号,说明已经正确安装,如果显示没有该命令,需要安装Java: sudo yum install java ...