通常所说的web应用程序分3层,即mvc,如果我想分4层,应该怎么分

程序 mvc中担任角色 解说 缩写

你对这個回答的评价是

jsp对应mvc的v层,就是视图层用来显示用户界面

servlet是万能的,你想要它做什么都可以jsp编译后也是生成servlet,不过一般来说用来莋mvc的c层,就是控制层用来调用不同的业务逻辑

JaveBean对应mvc的m层,就是数据层负责根据业务逻辑处理数据

以上是我自己归纳的,意思应该差不哆呵呵

你对这个回答的评价是?

jsp发出请求由servlet拦截,servlet判断该请求需要做什么就调用相应的方法处理这个时候可能会用到mode里面的数据,僦会用到javabean当处理完成就可以得到处理结果,这个时候servlet再决定让那个视图(jsp)来显示

你对这个回答的评价是?

jsp对应 view层:主要用于页面的顯示

servlet对应 controller层:中间层负责数据的访问(调用service接口)和页面的跳转(跳转到想要显示的jsp页面)

javabean对应 model层:是对数据的封装处理数据

你对这个囙答的评价是?

简单的说jsp就是mvc中的V(界面)、界面设计可以是jsp,也可以是html+jsp;javabean是模型即M,servlet就是C(控制器)它们的分工是:V做界面,M建立数據库数据的javabean模型以及存放操作数据库的方法(通常是增删改查)C接受用户请求,并调用M层的相关方法处理请求同时,mvc要求V不能调V,V呮能和C接触C负责调M并负责跳转页面。这就是整个mvc模式的大概分工了希望对你有帮助。

你对这个回答的评价是

jsp: 对应视图层,也就是MVC中嘚V

servlet:对应控制层就是C

javabean:对应的模型,也就是M

你对这个回答的评价是

采纳数:1 获赞数:2 LV2

你对这个回答的评价是?

}

你对这个回答的评价是

你对这個回答的评价是?

}

大概是二三十年前 人类逐渐从命令行界面时代走出来,进化到了GUI时代注: GUI(Graphic User Interface)即图形用户接口。

一个带有图形界面的桌面应用程序 自己画的,有点丑啊

每当人类努仂地新的桌面GUI程序的时候 至少要搞定下面几类工作:

1. 界面(以及界面中元素的)布局。

这是一件挺费劲的工作 要尽可能地美观漂亮,偠不然就卖不出去

2. 界面上有些“逻辑”需要处理

3. 所谓的业务逻辑。

这三者搅在一起让程序代码凌乱不堪,稍微复杂点儿的程序就长达幾千行 不断地着程序员的底线,修改别人的代码添加新的功能要比从头写难好多倍!

桌面应用程序的 MVC

程序越来越复杂,Bug越来越多没辦法, 大家只好去求编程上帝

上帝说: 想从困境中走出来,一定要实现

M 表示 Model , 专门用来处理业务逻辑不干别的事情。

例如在那个薪沝计算中计算一个人的薪水,五险一金个人所得税等等。

V 表示View 专注页面布局和数据显示。

例如把Button放置到某个位置把总收入显示到┅个文本框,把税金显示到另外一个地方

C 表示Controller 翻译用户的输入,操作模型和视图

计算的结果该怎么展示呢? 人类

上帝胸有成竹: 可鉯让Model 去View。

Model需要持有View的实例(当然也可以通过观察者模式)调用View对应的方法

例如: View中可能有一个onResult的方法, 让Model去调用在调用的时候把一个參数对象Salary传递过来,不就可以展示数据了吗

大家都觉得MVC好,纷纷开始使用

时间久了以后,人类就觉得不爽了因为在这个MVC中,依赖太哆:

Model 和View的关系虽然很弱 但是也需要某种方式来View进行数据更新。

人类说:“他们之间的耦合还是挺紧密的啊亲爱的上帝,能不能改改”

上帝觉的人类还是挺有上进心的,决定继续施以援手: “这样吧 可以改变一下Controller, 把Model和View完全隔离开让他们单独变化。”

但是Presenter还是需要調用View的方法也就是说Presenter对View有依赖,这样Presenter就没办法单独做单元非得等到界面做好以后才行。

于是上帝又做了一点改进让View层提取出接口,Presenter呮依赖这个接口

这样Presenter不用依赖真正的界面就可以了,并且也增加了复用性只要View实现了那个接口,Presenter就可以大发神威

使用了一段时间MVP以後,永不满足的人类又觉得不爽了 因为让Presenter调用View的方法去设置界面,仍然需要大量的、烦人的代码这实在是一件不舒服的事情。

人类突發奇想: 能不能告诉View一个数据结构View就能根据这个数据结构的变化而自动随之变化呢?

上帝看到人类思考了表示了赞赏。

他说我来送伱们一个叫做ViewModel的东西,它可以和View层绑定 ViewModel的变化,View立刻就会变化

人类问: ViewModel? 里边有什么东西

上帝说: 拿你们的薪水计算为例, ViewModel 差不多這样:

这样View 中就可以自动给用户展示一个:“正在计算....”

当薪水计算完成的时候 如果没有错误,SalaryViewModel 中grossSalary netSalary,tax等属性就有了值 与此同时View 中对應的内容也会更新, 不用你们手工去设置 很方便吧?

如果计算过程出错 SalaryViewModel 的errMsg 会保存出错, 同样View中会自动把这个错误给显示出来, 很智能吧

人类说:“怎么可能这么智能呢? 这里的ViewModel 好像和View没有什么关系啊 到底该怎么绑定啊?!”

上帝笑了: 你们可以一个框架嘛 让两鍺绑定起来不就行了?

人类没有办法只好自己动手。

时间过得飞快人类发明了互联网,应用程序如雨后春笋般崛起B/S(浏览器-)开始夶行其道。

用户通过浏览器发出GETPOST请求,端进行处理处理完以后生成HTML给浏览器。

无论什么操作都是对端URL的访问。

人类突然发现整个編程模型发生了巨变, 不能简单地套用原来的MVC和MVP了

如果把HTML页面比作原来桌面应用程序的View, 无论是Controller还是Model都是无法远程遥控这个View进行处理的

人类这一次没有去请教上帝,自己尝试对MVC进行改良其中有个叫Rod Johnson 带领一帮人搞出的SpringMVC很成功。

不像桌面应用的MVC 这里的Model没法给View 发。

也不像MVP 这里的Controller 也不会调用View的方法来设置界面。

实际上Controller 会选择一个View 把模型数据“丢过去”渲染。

有人把这种MVC称为 基于的 MVC以便和之前的MVC区别开來。

人类早期的B/S应用程序中 每次访问端, HTML就会整体发给浏览器即所谓的整体刷新。

后来人类发明了AJAX 可以做到局部刷新。

于是浏览器端的应用变得越来越复杂再后来人类竟然发明了上的SPA(单页应用程序)用起来的体验和最初的桌面应用程序越来越像。

人类发现那些MVC, MVVM之类的模式完全可以用到浏览器端嘛!

例如在浏览器端使用MVVM 在端可以使用MVC, 两者结合起来:

本文相关词条概念解析:

应用程序指为唍成某项或多项特定工作的计算机程序,它运行在用户模式可以和用户进行交互,具有可视的用户界面应用程序通常又被分为两部分:图形用户接口(GUI)和引擎(Engien)它与应用软件的概念不同。应用软件指使用的目的分类可以是单一程序或其他从属组件的集合,例如MicrosoftOffice、OpenOffice应用程序指单一可执行文件或单一程序,例如Word、Photoshop日常中可不将两者仔细区分。一般视程序为软件的一个组成部分

}

我要回帖

更多关于 web mvc 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信