登录注册注销功能实现:
浏览器端----->主页(登录、注册、注销),登录页面、注册页面 ------>浏览器发送请求
===========================================================
服务器端 ----->登录页面--->LoginServlet
所具备的功能:
根据用户名和密码判断用户是否存在
如果存在登录用户,将用户封装在request域属性中,转发到主页
如果不存在,提示错误信息
注册页面 ---->RegistServlet
所具备的功能:
根据用户名判断用户是否存在
如果存在,提示信息
不过不存在,封装信息,添加用户,并登录用户,跳转到主页 ------- web 使用javaBean封装数据 ------domain
注销功能----->LogOutServlet
所具备的功能:
注销用户登录的功能,跳转到主页
===========================================================
提供Service服务完成Servlet与UserDao之间的交互
所具备的功能:
注册用户的功能
根据用户名判断用户是否存在 ------------ service
添加用户
根据用户名和密码判断用户是否存在
===========================================================
对数据库信息进行处理 ------>UserDao ------->可以新建一个类专门用于测试该功能UserDaoTest (test包) ------------dao
提供一个工具类,用来解析xml文件,更新xml文件, ------------daoutils
所具备的功能:
根据用户名判断用户名是否存在
根据用户名和密码获取用户对象
添加用户功能
自定义异常类,用来处理自定义的异常信息 ------------exception
===========================================================
数据库----->xml模拟数据库
准备工作:新建web工程
在src目录下新建xml文件users.xml
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user username="admin" password="admin" nickname="admin" email="admin@black.com"/>
</users>
解析xml文件和支持XPath的jar包
放入到WEB-INF 下的lib文件夹内导入工程
分包:
com.spadeking.utils提供了解析xml文件的工具类
com.spadeking.dao直接操作xml文件的类
com.spadeking.test用来测试dao中的方法
com.spadeking.damain封装JavaBean
com.spadeking.exception自定义异常类
com.spadeking.mytag存放jsp页面用到的自定义标签类
com.spadeking.factory用来对dao层和service层解耦的工厂类,本工程为用到
com.spadeking.service负责信息的逻辑和流转
com.spadeking.web用来对页面信息的处理和service层数据的处理
XMLDaoUtils类:
package com.spadeking.daoutils;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class XMLDaoUtil {
private static String path = XMLDaoUtil.class.getClassLoader().getResource(
"users.xml").getPath();
private static Document dom=null;
static {
SAXReader reader = new SAXReader();
try {
dom = reader.read(path);
} catch (DocumentException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
private XMLDaoUtil() {
}
public static Document getDom() {
return dom;
}
public static void XmlRef() {
try {
XMLWriter writer = new XMLWriter(new FileOutputStream(path),
OutputFormat.createPrettyPrint());
writer.write(dom);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
throw new RuntimeException();
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException();
}
}
}
javaBean类:
package com.spadeking.domain;
import com.spadeking.exception.MsgException;
public class User {
private String username;
private String password;
private String password2;
private String nickname;
private String email;
public User() {
}
public User(String username, String password, String password2,
String nickname, String email) {
this.username = username;
this.password = password;
this.password2 = password2;
this.nickname = nickname;
this.email = email