打字猴:1.700484473e+09
1700484473 设计模式之禅 [:1700454092]
1700484474 38.1 MVC框架的实现
1700484475
1700484476 相信这本书的读者对Struts的使用是得心应手了,也明白MVC框架有诸如视图与逻辑解耦、灵活稳定、业务逻辑可重用等优点,而且还对其他的MVC框架(例如JSF、Spring MVC、WebWork)也了解一点。SSH(Struts+Spring+Hibernate)框架是Java项目常用的框架,作为一个Java开发人员,应该对SSH框架很熟悉了!我们今天就学Struts怎么用!我们要讲的是MVC框架如何设计,你可以设计一个新的MVC框架与Struts抗衡。
1700484477
1700484478 在开始设计MVC框架前,首先要对MVC框架做一个简单的介绍。MVC(Model View Controller)的中文名称叫做模型视图控制器模型,就是因为它的英文名字太流行了,中文名字反而被忽略了。它诞生于20世纪80年代,原本是为桌面应用程序建立起来的一个框架,现在反而在Web应用中大放异彩(其实也可以把B/S认为是C/S的瘦化结构),MVC框架的目的是通过控制器C将模型M(代表的是业务数据和业务逻辑)和视图V(人机交互的界面)实现代码分离,从而使同一个逻辑或行为或数据可以具有不同的表现形式,或者是同样的应用逻辑共享相同、不同视图。比如,可以用IE浏览器访问某应用网站(页面格式遵守HTML标准),也可以用手机通过WAP浏览器访问(页面格式遵守WML格式),对MVC框架来说,后台的程序(也就是模型)不用做任何修改,只是使用的视图不同而已。MVC框架如图38-1所示。
1700484479
1700484480
1700484481
1700484482
1700484483 图38-1 MVC框架示意图
1700484484
1700484485 该框架是Model2的结构。MVC框架有两个版本,一个是Model1,也就是MVC的第一个版本,它的视图中存在着大量的流程控制和代码开发,也就是控制器和视图还具有部分的耦合。也有人不认为Model1属于MVC框架,那也说得通,因为在JSP页面中融合了控制器和视图的功能,这其实就是早期的开发模式,开发一堆的JSP页面,然后再开发一堆的JavaBean,JavaBean就是模型了,它只是把JSP和JavaBean拆分开了。Model2版本则提倡视图和模型的彻底分离,视图仅仅负责展示服务,不再参与业务的行为和数据处理。我们举例来说明MVC框架是如何运行的。
1700484486
1700484487 在做Web开发时,例如开发一个数据展示界面,从一张表中把数据全部读出,然后展示到页面上,也是一个简单的表格,其中页面展示的格式就是视图V,怎么从数据库中取得数据则是模型M,那控制器C是做什么的呢?它负责把接收的浏览器的请求转发通知模型M处理,然后组合视图V,最终反馈一个带数据的视图到用户端,数据处理流程如图38-2所示。
1700484488
1700484489
1700484490
1700484491
1700484492 图38-2 MVC框架的逻辑流
1700484493
1700484494 浏览器通过HTTP协议发出数据请求①,由控制器接收请求,通过路径②委托给数据模型处理,模型通过与逻辑层和持久层的交互(路径③④),把处理结果反馈给控制器(路径⑤),控制器根据结果组装视图(路径⑥⑦),并最终反馈给浏览器可以接受的HTML数据(路径⑧)。整体MVC框架还是比较简单的,但它带来的优点非常多。
1700484495
1700484496 ❑高重用性
1700484497
1700484498 一个模型可以有多个视图,比如同样是一批数据,可以是柱状展示,也可以是条形展示,还可以是波形展示。同样,多个模型也可以共享一个视图,同样是一个登录界面,不同用户看到的菜单数量(模型中的数据)不同,或者不同业务权限级别的用户在同一个视图中展示。
1700484499
1700484500 ❑低耦合
1700484501
1700484502 因为模型和视图分离,两者没有耦合关系,所以可以独立地扩展和修改而不会产生相互影响。
1700484503
1700484504 ❑快速开发和便捷部署
1700484505
1700484506 模型和视图分离,可以使各个开发人员自由发挥,做视图的人员和开发模型的人员可以制定自己的计划,然后在控制器的协作下实现完整的应用逻辑。
1700484507
1700484508 MVC框架还有很多优点,本章主要不是讲解MVC技术,主要是通过讲解设计MVC框架来说明设计模式该怎么应用,所以想了解更详细的MVC框架信息请自行查阅资料。
1700484509
1700484510 38.1.1 MVC的系统架构
1700484511
1700484512 我们设计的MVC框架包含以下模块:核心控制器(FilterDispatcher)、拦截器(Interceptor)、过滤器(Filter)、模型管理器(Model Action)、视图管理器(View Provider)等,基本上一个MVC框架上常用的功能我们都具备了,系统架构如图38-3所示。
1700484513
1700484514
1700484515
1700484516
1700484517 图38-3 MVC系统架构
1700484518
1700484519 各个模块的职责如下:
1700484520
1700484521 ❑核心控制器
1700484522
[ 上一页 ]  [ :1.700484473e+09 ]  [ 下一页 ]