- 使用Struts搭建MVC模式商业应用(蓝桥杯软件大赛培训教材-Java方向)
- 工业和信息化部人才交流中心蓝桥杯软件大赛专家委员会编著
- 1483字
- 2020-08-28 01:58:20
1.2 什么是MVC
Struts 1、WebWork、Struts 2都是MVC框架,那么究竟什么是MVC,在此之前开发人员又是怎样进行Web应用开发的呢?接下来将一一进行解答。
● 最初的Web
早期的Web应用全部都是静态的HTML页面,主要是将一些文本信息呈现给浏览者。这些信息是固定写在HTML页面里的,页面不具备与用户交互的能力,没有动态显示的功能。
● CGI
CGI(Common Gateway Interface,通用网关接口)的出现,解决了动态性的问题。CGI技术可以从数据库读取信息,将这些信息呈现给用户,还可以获取用户的请求参数,并将这些参数保存到数据库。但CGI技术也存在很多缺点,其中最大的问题就是开发动态Web应用难度大,而且在性能等各方面也存在限制。
● Servlet
从1997年开始,随着Java语言的广泛使用,Servlet技术迅速成为动态Web应用的主要开发技术。相比传统的CGI应用而言,Servlet具有开发效率高、稳定性强的优势,不过开发人员还是不得不在Servlet中拼接HTML代码,这是一项令人头疼的工作。
● JSP
在1998年,微软公司发布了ASP 2.0,它是真正的动态Web编程技术。它的语法简单、开发效率高,很快就成为了使用最为广泛的动态Web开发技术。作为对抗,Sun公司带领的Java阵营立即发布了JSP标准。JSP虽然本质仍是Servlet,但采用的代码编写方式是在HTML页面中嵌入JSP脚本,这样大大简化了Servlet代码的编写。
● JSP陷阱
在Servlet和JSP技术出现后,开发人员惊喜地发现开发动态Web应用是多么得简单,特别是JSP的出现可以让开发人员在HTML中嵌入脚本,而不是用Servlet去输出HTML。
不过这种欣喜没有持续多长时间,随着实际Web应用的使用越来越广泛,Web应用的规模也越来越大,开发人员发现Web应用的维护成本越来越高。即使只需要修改JSP页面的一个按钮文本,或者一段静态的文本内容,也不得不打开包含各种动态脚本的页面源文件进行修改。这个时候人们意识到,使用JSP页面担当过多的任务(特别是处理业务逻辑)是失败的选择,尤其对于后期的维护相当不利。慢慢地,开发人员开始探索如何分离业务逻辑与视图展现,从而构建更易维护和重用的Web应用。
● Model 1和Model 2模式
对于Java阵营的动态Web编程技术而言,经历了所谓的Model 1和Model 2时代。
在Model 1模式下,如图1.1所示,整个Web应用几乎全部由JSP页面组成,JSP页面接收、处理客户端请求,并直接做出响应,只用少量的JavaBean来处理数据库连接、访问等操作。
Model 1模式的实现比较简单,适用于快速开发小规模项目,其中JSP页面身兼视图展现和逻辑控制两种角色。但将控制逻辑和表现逻辑混杂在一起,会导致代码的重用性非常低,增加了Web应用维护的难度,系统可扩展性差。
Model 2模式已经是基于MVC的设计模式。如图1.2所示,在Model 2模式中,Servlet作为前端控制器,负责接收客户端发送的请求,在Servlet中只包含控制逻辑和简单的前端处理,然后调用后端JavaBean来完成实际的业务逻辑处理,最后转发到相应的JSP页面进行视图展示。
图1.1 Model 1的程序流程
图1.2 Model 2的程序流程
在Model 2的模式下,JSP页面不再承担控制器的责任,它仅仅是表现层角色,用于将结果呈现给用户。JSP页面的请求与Servlet控制器交互,而Servlet负责与后台的JavaBean通信。在Model 2模式中,模型层(Model)使用JavaBean实现,视图层(View)由JSP页面充当,而控制器层(Controller)则由Servlet完成。
对于小型的Web站点,如果后期的更新、维护工作量不大,仍然可以使用Model 1模式来开发。虽然Model 2提供了更好的可扩展性及可维护性,但同时也增加了前期开发成本。
● MVC设计思想
MVC并不是Java语言所特有的设计思想,也并不是Web应用所特有的思想,它是所有面向对象程序设计语言都应该遵守的规范。
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分用尽量少的耦合协同工作,从而提高应用的可扩展性及可维护性。
MVC更符合软件工程化管理的精神,不同层次各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生程序代码。