<学习笔记>
Servlet+JSP+JavaBean(MVC)模式适合开发较复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javaBean负责封装数据,各个模块之间层次清晰。
软件三层结构为Web层、业务逻辑层(service层)、数据访问层(dao层)。
简易的注册登陆案例
项目完整源码地址:https://git.oschina.net/beyondzl/register_login
1.搭建开发环境
1.1导人第三方开发包
dom4j-1.6.1.jar(提供了一个使用XML的Java库)
jaxen-1.1.1.jar(dom4j的xpath api依赖jaxen完成 )
jstl(JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。)
org.apache.commons.beanutils.jar(javabean工具)
log4j-1.2.15.jar
commons-codec-1.10.jar(消息加密解密工具类)
commons-logging-1.2.jar
standard.jar(JSP标准标签库)
1.2创建组织程序的包
cn.itcast.domain
cn.itcast.dao(接口)
cn.itcast.dao.impl(实现类)
cn.itcast.service(接口)
cn.itcast.service.impl(实现类)
cn.itcast.web.controller(处理请求的servlet)
cn.itcast.web.UI(给用户提供用户界面)
cn.itcast.utils(工具类)
cn.itcast.exception(异常类)
cn.itcast.form(表单信息)
junit.text(单元测试)
WEB-INF/jsp(保存所有的JSP)
WEB-INF/lib(保存导入的第三方jar包)
message.jsp(全局消息页面)
1.3创建代表数据库的XML文件
在类目录下创建一个代表数据库的xml文件
web层UIServlet将浏览器发送的请求转发到相应的jsp注册登录显示页面。
web层处理请求的Servlet调用service层方法实现注册和登录的业务逻辑功能,将request参数存入form bean ,校验合格后将form bean数据拷贝到user bean 存入数据库。
在JSP注册界面用EL表达式回送校验错误信息和之前填写的内容。
dao层的实现类 :
package cn.itcast.dao.impl;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import org.dom4j.Document;
import org.dom4j.Element;
import cn.itcast.dao.UserDao;
import cn.itcast.domain.User;
import cn.itcast.utils.XmlUtils;
//对XML文件中的数据元素进行操作
public class UserDaoImpl implements UserDao {
public void add(User user) {
try {
Document document = XmlUtils.getDocument();
Element root = document.getRootElement();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Element user_tag = root.addElement("user");
user_tag.setAttributeValue("id", user.getId());
user_tag.setAttributeValue("username", user.getUsername());
user_tag.setAttributeValue("password", user.getPassword());
user_tag.setAttributeValue("email", user.getEmail());
user_tag.setAttributeValue("nicname", user.getNicname());
user_tag.setAttributeValue("birthday", user.getBirthday()==null?"":df.format(user.getBirthday()));
XmlUtils.write2Xml(document);
}catch (Exception e) {
throw new RuntimeException(e);
}
}
public User find(String username, String password) {
try{
Document doc