一、前言

在学习Java Web的过程中,大家都会接触到Model1和Model2,历史的发展过程是先有Model1后有Model2。那么它们之间有何相同之处和不同之处呢?本文简单给大家介绍一下吧。

二、Model1

Model1使用了两种技术:JSP+JavaBean。

在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接受处理客户端请求,对请求处理后直接做出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。

Model1架构的优点是:架构简单,比较适合小型项目开发。但Model1的缺点十分明显:从工程化角度看,它的局限性非常明显。JSP的职责不单一,身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,职责过重,代码的可复用性低,不便于维护。

三、Model2

架构之路不断的发展,后来出现了Model2。Model2使用了三种技术:JSP+Servlet+JavaBean。其分工如下所示:

1、JSP的主要作用是显示页面。
2、Servlet作为前端控制器,负责接收客户端发送的请求。它的主要作用是获取表单参数、调用业务逻辑、转向页面(转发或重定向)。
3、JavaBean的主要作用是负责处理业务逻辑、访问数据库、保存数据状态(也就是我们常说的B层、D层、实体层的集合体)。

可以说,Model2就是MVC的一个成功应用:模型(JavaBean)、视图(JSP)、控制器(Servlet)。

正如上图所示,Model2下的JSP不在承担控制器的责任,它仅仅是表现层角色,仅仅用于将结果呈现给用户。浏览器发来的请求与Servlet(控制器)交互,而Servlet负责与后台的JavaBean通信。在Model2模型下,模型(Model)由JavaBean充当,视图(View)有JSP页面充当,而控制器(Controller)则由Servlet充当。

Model2的优点明显:职责清晰,各司其职,互不干扰,有利于组件的重用,适合大型的Web项目。

后记

Model1和Model2仅仅是一种设计思想,并不是一个工业级产品,真正实现MVC设计思想的产品是Struts。后续会有介绍,敬请关注下文。