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 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);
}
}
//
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 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 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);
}
}
//
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 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 fillBean(HttpServletRequest request,Class clazz){
try {
T bean = clazz.newInstance();
BeanUtils.populate(bean, request.getParameterMap());
return bean;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}