JavaEE开发模式、JavaEE的经典三层架构

本文探讨了JavaEE的开发模式,从纯Servlet到JSP+JavaBean,再到Servlet+JavaBean+JSP的演变,强调了MVC设计思想的重要性。接着详细介绍了JavaEE的经典三层架构,包括Service、Dao层,以及如何基于此架构改造EasyMall项目,涉及注册、登录和登出功能的实现细节。
摘要由CSDN通过智能技术生成

JavaEE开发模式

  1. 纯Servlet开发
    只用Servlet开发,html内容混在Java代码中不利于开发维护。

  2. 纯JSP开发
    比起纯Servlet开发,JSP改为了在HTML编写java代码,便于页面开发。大量的java代码嵌在HTML中,同样非常混乱,不利于开发维护。

  3. JSP+JSP标签技术开发
    将JSP中的java代码通过标签技术替代,减少了jsp页面中的java代码,jsp更加简洁。大量的自定义标签开发非常麻烦,大量的自定义标签混在html标签中,不利于开发维护。

  4. JSP + JavaBean(模式一)
    JSP负责接收请求 封装数据到Bean 调用Bean中的业务逻辑代码 获取结果 展示数据
    JavaBean负责封装数据 处理数据业务逻辑
    初步实现了业务逻辑和数据展示的分离,结构变的跟加清晰,便于开发维护。
    JSP仍然在负责处理页面展示以外的其他功能,仍然不可避免的要编写java代码

在这里插入图片描述

  1. Servlet+JavaBean +JSP(模式二)
    Servlet负责接收请求,封装数据到Bean,调用Bean中的业务逻辑代码 获取结果数据 转发到JSP中展示
    JavaBean负责封装数据 处理数据业务逻辑
    JPS负责展示数据
    每个部分只负责自己最擅长的工作,结构清晰,便于开发维护。

在这里插入图片描述

  1. MVC设计思想
    MVC设计模式认为,任何软件都可以分为负责程序执行过程的控制器(Controller) 负责业务数据分装处理的模型(Model) 和负责用户交互的视图(View)三部分组成。MVC设计思想要求软件在设计的过程中,应该将这三部分互相独立,使软件结构更加清晰,便于开发维护。
    MVC设计思想不是JavaEE特有的思想,普遍应用在软件开发领域,指导软件的开发设计。

  2. JavaEE的经典三层架构
    在JavaEE的经典三层架构中,将JavaBean的功能进一步细分,JavaBean只负责数据封装,Service负责业务逻辑处理,Dao负责数据库的访问。

JavaEE的经典三层架仍然符合MVC设计模式,可以说是模式二的进一步发展。比起模式二,模块划分跟加清晰,各司其职,便于开发维护。

目前JavaEE开发中主要采用的就是这种开发模式。

在这里插入图片描述

基于JavaEE的经典三层架构改造EasyMall

  1. 创建EasyMall项目
    a. 导入第三方开发包

在这里插入图片描述

b. 导入配置文件

在这里插入图片描述

c. 导入其他资源文件

在这里插入图片描述

d. 创建出对应包结构

在这里插入图片描述

e. 导入javabean类

在这里插入图片描述

f. 导入相关工具类

在这里插入图片描述

  1. 开发主页
    直接将原项目中的主页拷贝即可

在这里插入图片描述

  1. 开发注册功能
    a. 导入注册页面

在这里插入图片描述

b. 开发自定义异常
自定义MsgException,为了用起来方便,将其定义为RuntimeException,并提供了可以接受异常信息的构造方法。

package cn.tedu.exception;
 public class MsgException extends RuntimeException {
   
    public MsgException() {
   

    }
  public MsgException(String msg) {
   
        super(msg);
    }
}

c. 开发RegistServlet
在web包下创建RegistServlet,将原来的RegistServlet导入,将其中处理业务逻辑和数据访问的代码删除,改为调用Service中的业务方法
在这个过程中用到了Service中不存在的方法,则先创建出这个方法,后续再补。

package cn.tedu.web;

import cn.tedu.domain.User;
import cn.tedu.exception.MsgException;
import cn.tedu.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(urlPatterns = "/RegistServlet")
public class RegistServlet extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   

        //0.解决乱码
        request.setCharacterEncoding("utf-8");
       response.setContentType("text/html;charset=utf-8");

        //1.获取请求参数
        String username = request.getParameter("username").trim();
        String password = request.getParameter("password").trim();
        String password2 = request.getParameter("password2").trim();
        String nickname = request.getParameter("nickname").trim();
        String email = request.getParameter("email").trim();
        String valistr = request.getParameter("valistr").trim();

        //2.校验数据
        //--校验验证码
        HttpSession session = request.getSession();
        String valistr2 = (String) session.getAttribute("valistr");
        if(valistr == null || valistr2 == null || !valistr.equals(valistr2)){
   
            request.setAttribute("msg","验证码不正确!");
            request.getRequestDispatcher("/regist.jsp").forward(request,response);
            return;
        }
        //--校验数据
        if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张艳霞zhangyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值