当前位置:文档之家› 黑马程序员javaweb教程:案例--注册功能

黑马程序员javaweb教程:案例--注册功能

案例--注册功能1功能说明没有人不知道什么叫注册功能吧!我们这里的注册功能很简单,给用户提供一个页面,在页面中给出一个注册表单,用户输入自己的注册信息(用户名和密码)。

然后提交表单,把请求发送到Servlet,Servlet会把用户的注册信息保存到XML文件中。

完毕!我们也不打算让Servlet做太多的事情,所以真正保存信息的工作还是交给DAO来做吧!所以在Servlet中只是获取DAO对象,然后调用DAO的方法来完成保存信息!DAO – Data Access Object(数据的存取工作,由这个对象来完成!)●User :这是我们注册功能的唯一数据类!不能用业务数据做主键(唯一标识!)username:用户名是唯一的!passwordemail:唯一的!2项目分析用户通过注册页面的表单向Servlet发送请求,Servlet获取DAO对象,然后调用DAO 对象的方法save()方法完成向XML文档中保存注册信息。

●reigst.jsp:包含注册表单的页面,提交表单会把请求交给RegistServlet来处理;●RegistServlet:注册Servlet,包含doPost()方法。

获取DAO对象,然后调用DAO对象的save()方法传递User对象(注册信息领域对象)过去,由DAO完成保存注册信息;●RegistDao:只有一个save(User)方法,会使用DOM4J完成把User保存到XML文件中;●RegistDaoImpl:为了更好的处理耦合的问题,我们把RegistDao定义为接口,而RegistDaoImpl为其实现类;●User:领域对象,用来封装注册信息。

最终还需要把它转换成XML数据持久化!●user.xml:因为我们现在没学数据库,只能使用XML作为存储数据的工具。

总是从无依赖开始!3从注册页面开始<h1>测试页面</h1><form action="regist.html"method="post">用户名:<input type="text"name="username"/><br/>密码:<input type="password"name="password"/><br/><input type="submit"value="提交"/></form>4从底层开始(无依赖的领域对象)package cn.itcast.regist.domain;public class User {private String username;private String password;......}5编写XML文件在src目录下创建user.xml文件。

只要在src下创建的文件,都会copy到classes目录。

最终会在项目发布时发送到Tomcat下。

<?xml version="1.0"encoding="UTF-8"?><users></users>6RegistDaopackage cn.itcast.regist.dao;import er;public interface RegistDao {public void save(User user) throws Exception;}7RegistDaoImplRegistDaoImpl是RegistDao的实现类!将来如果希望把数据存储到数据库中时,只需要再给出一个新的RegistDao实现类即可,无需去修改代码!package cn.itcast.regist.dao.impl;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import .URISyntaxException;import .URL;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import cn.itcast.regist.dao.RegistDao;import er;public class RegistDaoImpl implements RegistDao {private String xmlFilePath = "F:\database\users.xml";public RegistDaoImpl() {}public RegistDaoImpl(String xmlFilePath) {this.xmlFilePath = xmlFilePath;}public String getXmlFilePath() {return xmlFilePath;}public void setXmlFilePath(String xmlFilePath) {this.xmlFilePath = xmlFilePath;}private Document getDoc() throws DocumentException {SAXReader reader = new SAXReader();ClassLoader loader = this.getClass().getClassLoader();InputStream in = loader.getResourceAsStream(this.xmlFilePath);return reader.read(in);}private void saveDoc(Document doc) throws IOException, URISyntaxException { OutputFormat format = new OutputFormat();format.setIndent(true);format.setNewlines(true);format.setEncoding("UTF-8");ClassLoader loader = this.getClass().getClassLoader();URL url = loader.getResource(this.xmlFilePath);XMLWriter out = new XMLWriter(new FileWriter(new File(url.toURI())), format);out.write(doc);out.close();}public void save(User user) throws Exception {Document doc = getDoc();Element root = doc.getRootElement();Element userEle = root.addElement("user");userEle.addElement("username").setText(user.getUsername());userEle.addElement("password").setText(user.getPassword());saveDoc(doc);}}8RegistServletpackage cn.itcast.regist.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import cn.itcast.bean.factory.BeanFactory;import cn.itcast.regist.dao.RegistDao;import er;public class RegistServlet extends HttpServlet {@Overridepublic void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {req.setCharacterEncoding("UTF-8");String username = req.getParameter("username");String password = req.getParameter("password");User user = new User(username, password);RegistDao registDao = new RegistDaoImpl();registDao.save(user);resp.setContentType("text/html;charset=UTF-8");resp.getWriter().print("注册成功!!!");} catch (Exception e) {throw new RuntimeException(e);}}}10查找的是哪个XML文件最后我们讨论一个问题!在我们的MyEclipse项目中,src目录下有一个user.xml文件,同时WebRoot\WEB-INF\classes下也有一个user.xml文件。

注意,项目最终是需要发布的,项目发布到Tomcat的webapps目录下。

这说明在webapps 下会有一个regist目录,这下面的WEB-INF\classes目录下也会有一个user.xml文件。

相关主题