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的更多相关文章

  1. 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来 ...

  2. java之xml解析-dom4j

    解析方式 XML 解析方式有很多种,但是常用的有两种,如下: DOM Document Object Model:把整个 XML 读到内存中,形成树状结构.整个文档为 Document 对象,属性为 ...

  3. java的XML解析(DOM4J技术)

    DOM4J技术解析XML文件 一,XML简介 xml (可扩展标记语言)  全称: Extended Markup Language 可扩展的含义:允许程序员按照自己的想法去扩展新的标签 注意:但是扩 ...

  4. XML解析-Dom4j的DOM解析方式更新XML

    Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...

  5. Java数据库编程、XML解析技术

    数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...

  6. Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)

    1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...

  7. Java数据库编程及Java XML解析技术

    1.JDBC概述 A.  什么是JDBC? Java DataBase Connectivity:是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成.通过这些类和接口 ...

  8. xml之dom4j解析

    * 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...

  9. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  10. 【Java】XML解析之DOM4J

    DOM4J介绍 dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP,使用需要引用dom4j.jar包 ...

随机推荐

  1. struts2第一天——入门和基本操作

    一.概述 1.运用场景: 应用于三层架构中web层的框架(显示层的运用),是经典MVC模型的web应用的变体. 2.与struts1的对比: struts2是在struts1基于webwork发展的全 ...

  2. 2017-2018-1 20155310 《信息安全系统设计基础》 实现mypwd

    2017-2018-1 20155310 <信息安全系统设计基础> 实现mypwd 作业要求: 1.学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...

  3. c++ 预处理和多重替换

     预处理概念  #include  #define  extern 一. 预处理概念 在源代码编译成机器指令之前,都要进行预处理. 预处理阶段一般会在编译之前处理和修改C源代码.完成预处理后预 ...

  4. python基础学习1 -异常捕获

    #!/usr/bin/env python # -*- coding:utf-8 -*- #-------try-except try: file_name = input("请输入需要打开 ...

  5. 【转载】MSXML应用总结 开发篇(下)

    原文:http://blog.sina.com.cn/s/blog_48f93b530100eq4b.html 三.查询XML文档节点 这部分属于“读”XML文档并做节点遍历,由于担心加上实例会占用过 ...

  6. java异常处理 日志记录异常具体位置的方法

    首先要在方法处抛出 Exception异常 然后在方法调用处try catch接收此异常对象 这样就能够记录异常具体位置了 控制台输出: 日志: 要点: System.getProperty(&quo ...

  7. window.location.hash 页面跳转,精确定位,实例展示:

    window.location.hash 页面跳转,精确定位,实例展示: (1).index.phtml,页面用于传参 <script id="bb_list_template&quo ...

  8. 开箱即用 - log4net 日志

    废话少说,先上代码 log4net Demo 好的系统都有日志,log4net 是我在.net平台下用过最爽的日志库,简单易用.功能强大. 基于配置(配置很简单,一看就明,通用,拷去即用): 可同时保 ...

  9. String与Date的互相转换

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 也可以: SimpleDateFormat sd ...

  10. X5webview去掉分享功能和缓存功能

    x5webview比原生的webview适配更好,加载更快,对音视频的兼容性更好,具备独特的优势 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使 ...