JavaEE三层架构与MVC

摘要与总结

等下总结下

MVC模式

Model1

​ 说到设计模式,不得不提一下之前的的Model1。据说早期对于java企业项目的开发,用的是Jsp+JavaBean的模式。由于jsp在编译后实际就是Servlet,当时的开发人员就省去编写Servlet,将所有的业务逻辑都放在jsp中。在业务逻辑简单的时候,这种方式还算高效,可是到了现代业务逻辑复杂,还用这种模式开发将会导致一个问题:jsp中的代码过于繁琐,一段是html的代码,中间又嵌入了java代码。java代码又过于庞大:既有对业务的逻辑的实现,又有对业务的展示,还有对数据库的操作。因此会导致代码的维护性、可读性较差:如果想增加或修改一个代码,就需要把整个jsp代码都看完,理解了相关的逻辑后才行,否则很可能出现雪崩(一处修改,多处错误)。而这个过程又比较漫长,因此在现代开发中已经被抛弃。

Model2(MVC)

​ 为了解决上述问题,我们引入Model2——MVC模式。也就是说MVC能够将展示层(html)与业务逻辑分开,一方面能够让每个部分的代码尽量少,一方面又能将开发的思路清晰(相当于给了一个模板,之后往里面填实现代码)。

​ 那么具体MVC是代表什么呢?

  • M:Model,模型,代表业务逻辑代码与数据库代码(对用户请求处理)

  • V:View,视图,代表展示给用户的界面(对数据展示j)

  • C:Controller,控制,代表对业务信息的传递(告诉模型要处理什么,告诉视图要展示什么)

  1. 提交需求。用户打开浏览器,输入网址,访问到jsp页面,点击页面上的内容(input),传递一个请求
  2. 获取需求。该请求就传递到控制器Servlet(Control)中,Servlet分析出用户需要的数据,告知Model
  3. 获取数据。Model通过相应的方法,在数据库(DataBase)中算出相应的数据,发回给Servlet(Control)
  4. 展示数据。Servlet(Control)得到数据后,再转发数据到 jsp(View)中,展示给用户

三层架构

​ 三层架构是javaee规范中的推荐架构,传统意义上的是分为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。在javaee的开发中,三层架构具体分为表示层(web层)、业务逻辑层(service层)、数据访问层(dao层)。

  • web层:与客户端交互,包括获取用户请求,传递数据,封装数据,展示数据。
  • service层:复杂的业务处理,包括各种实际的逻辑运算。
  • dao层:与数据库进行交互,与数据库相关的代码在此处实现。

​ 这张图来自17年黑马程序员的javaee课程。现在我们来梳理一下流程。

  1. 提交需求。客户端点击jsp相应的内容,传递一个请求。
  2. 获取需求。Servlet获取需求、分析需求,将需求传递到service层。
  3. 处理需求。service层中是对业务逻辑进行处理,这里是对业务具体的处理,调用各种方法运算(不涉及数据库)。
  4. 提取数据。需要提取数据库中的信息时,service将需求传递给dao层,由该层与数据库交互。
  5. 返回需求。由后向前传递处理好的结果,封装为一个javaBean对象,Servlet将封装好的对象返回给jsp展示给用户。

两者之间的区别与联系

​ 两者本为不同领域下的设计模式,并无直接关联。

​ 三层架构是典型的架构模式(Architecture Pattern),将产品的开发细分为三层,这么做的好处是能够让每个人都能发挥自己的专长。比如前端工程师能专注页面的设计,如何吸引用户,而不用在乎业务逻辑的实现。数据库工程师,又可以专注数据库的处理,使其变得高效,而不必关注如何展示。

​ MVC是表现模式(Presentation Pattern),是为了让HTML代码和业务逻辑分开,使代码清晰(el表达式的引入也是为了这个原因),但在某种意义上,也是将功能进行分化。

​ 如果说可能的联系,那么在javaee的三层架构中的ui层(web层)中继续细分下去,又刚好符合一个mvc的设计模式。也就是说,mvc是把第一层web层细继续分为控制器Servlet、视图jsp、实体模型javabean。其中Servlet不仅负责mvc中的信息控制,还负责三层架构中的信息调用返回。

JavaEE三层架构与MVC的更多相关文章

  1. 一、JSP九大内置对象 二、JAVAEE三层架构和MVC设计模式 三、Ajax

    一.JSP九大内置对象###<1>概念 不需要预先申明和定义,可以直接在jsp代码中直接使用 在JSP转换成Servlet之后,九大对象在Servlet中的service方法中对其进行定义 ...

  2. 关于三层架构与MVC的一些理解

    刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...

  3. 三层架构 与 MVC那点事儿

    以下为转载内容: 地址 MVC与三层架构的异同点 首先先解释一下MVC. V即View.是视图的意思. C即Controler.是控制器的意思. M即Model,是模型的意思. 这三个里.最不容易理解 ...

  4. 三层架构与MVC之间的区别

    文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...

  5. 三层架构与MVC &amp; 设计模式的较量

    刚刚学习了三层架构,并且正在实际应用中,但随着学习的深入,又了解到了一个叫MVC的东西,(早在设计模式中就听到过MVC,仅仅是简单查了一下什么意思.)如今正好把这三个东西放在一起聊聊. 三层 是一个分 ...

  6. 三层架构和MVC模式

    目录[-] 1.三层架构 2.MVC 2.1 标准的MVC(Model-View-Controller) 2.2 Web MVC 3.三层架构和MVC的区别与联系 1.三层架构 三层架构(3-tier ...

  7. 三层架构与MVC的区别

    我们平时总是将混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. MVC是一个设 ...

  8. asp.net中三层架构与mvc之区别?

    对于标题中的问题,如果是没有同时接触三层架构和mvc的初级.net开发人员,想必一定会非常糊涂和混淆.关于此我也百度过N回,看过N多帖子和 回答,但几乎没有人能表述清楚.近期我从典型mvc+entit ...

  9. 三层架构和MVC

    注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用 http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html 又看到有人在问三 ...

随机推荐

  1. hoj 棋盘问题 状压入个门

    大概题意是:有一个n*m的棋盘,在这个棋盘里边放k个旗子,要求每一行每一列都不能存在一对旗子相邻,问最后总共的方案数. 我们先来考虑个简单的,假如说只有一行,要求在这一行里边填充k个旗子,要求任意两个 ...

  2. Vue.use()源码分析且执行后干什么了

    直接开始分析源码 // Vue源码文件路径:src/core/global-api/use.js import { toArray } from '../util/index' //initUse函数 ...

  3. kubeadm init初始化报错解决,亲测

    [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' error ...

  4. 【nodejs代理服务器二】nodejs webpack打包配置踩坑总结

    接着上篇用Nodejs开发web代理,防止web渗透.如果部署到正式环境,需要进行打包配置. 我在用webpack打包配置中遇到了几个错误,总结如下: webpack环境变量问题 https://ww ...

  5. IO五种模型和select与epoll工作原理(引入nginx)

    用户速度体验的1-3-10原则 性能影响 有很多研究都表明,性能对用户的行为有很大的影响: 79%的用户表示不太可能再次打开一个缓慢的网站 47%的用户期望网页能在2秒钟以内加载 40%的用户 ...

  6. 使用ISO文件制作openstack使用的coreOS镜像

    OpenStack源码交流群: 538850354 本篇文章是使用coreOS ISO文件手动制作openstack使用的qcow2镜像文件,关于coreOS的介绍,可以看这里 使用服务器:cento ...

  7. 移动分辨率和rpx

    从一张设计图的实现说起,为什么模拟器下ip6的分辨率是375而设计图一般给750? 看上面的这张图,首先屏幕尺寸就是实际的物理尺寸,重点是分辨率pt和分辨率px,要回答这个问题,就要明白pt与px.那 ...

  8. G1垃圾收集器原理剖析【官方解读】

    继续基于上一次https://www.cnblogs.com/webor2006/p/11135005.html的官方G1文档进行解读,上一次分析到了这: 话不多说,继续往前读: When perfo ...

  9. 基本排序-冒泡/选择/插入(python)

    # -*- coding: utf-8 -*- import random def bubble_sort(seq): n = len(seq) for i in range(n-1): print( ...

  10. VMWARE许可文件

    VMware 14 Pro 永久许可证激活密钥FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7X-QGUWD