java web笔记——软件三层结构&MVC模式实现注册登陆案例

本文介绍了使用Servlet+JSP+JavaBean(MVC模式)开发复杂Web应用的方法,详细讲解了软件的三层结构,包括Web层、业务逻辑层和服务层。通过一个简单的注册登录案例,阐述了各层的功能和交互过程,如Web层的请求转发,Service层的业务逻辑处理,以及DAO层的数据访问。同时,提到了在实际开发中遇到的问题及解决策略,如DOM4J、BASE64编码和BeanUtils转换问题。
摘要由CSDN通过智能技术生成

<学习笔记>

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
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值