简述MVC架构及其应用
简述MVC架构及其应用
李同1
(1. 石家庄铁道大学,河北 石家庄 050000)
摘要:本文章围绕“论MVC架构设计及其应用”论题,从参与的项目、主要技术和标准、开发时遇到的问题三个方面进行论述,依次介绍了在什么地方用到了MVC架构,MVC架构的技术和标准以及构建MVC架构时遇到了哪些问题,和具体实施效果怎么样。
关键词:MVC;架构;软件;软件体系
中图分类号: 文献标志码:A
0 引言
MVC,即Model-View-Controller,是用来将应用程序分为三个主要逻辑组件的架构模式:模型,视图和控制器。这些组件被用来处理一个面向应用的特定开发。 MVC是最常用的行业标准的Web开发框架,以创建可扩展的和可扩展的项目之一。[1]
jsp+Servlet+javaBean最典型的MVC模式,实际上就是model2的实现方式,就是把视图和逻辑隔离开来,model2就是jsp+servlet +service+dao。作者参与的项的项目也正是使用了此方式的架构。
1 参与的项目
在学习过程中,经常做一些练手的项目,如大家熟知的学生管理系统、图书管理系统等,到后来做的一些稍微大点的项目、如新闻热词云、云端智能相册等,只要是一个web系统,就用到了 MVC,前期做的项目功能虽然简单,但它的各项功能都能完美的契合进入MVC的各个模块中, 例如学生管理系统中,Model中的JavaBean就是将学生的信息封装;View中,jsp、html前端;Controller中,Servlet用来处理请求等。
作者一开始并不知道什么架构,或者说知道了也不会用,一开始做的项目就是拿一堆Jsp通篇写下来,虽说功能也实现了,但是Jsp文件巨多,比如图书管理系统就有三十多个,而且还很乱。后来加入了一些java文件,把连接数据库、获取当前时间等一些方法写入java中,在Jsp调用它们。再后来,又把请求放到了Servlet中,后来又加了JavaBean……在实践和学习、请教中一步一步应用了MVC架构,到现在,如果有个web项目要我去做,我还是会用MVC架构。
2 主要技术和标准
MVC架构各层的技术包括很多,如Model:JavaBean;View:html、jsp、volicity freemaker;Controller:Servlet、Controller、Action等。应用于基于MVC架构模式的框架,常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:angularjs、reactjs、backbone;由MVC演化出了另外一些模式如:MVP、MVVM。[2]
MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,应该说MVC它是一种软件开发架构模式,它包含了很多的设计模式,最为密切是以下三种:Observer (观察者模式)、Composite(组合模式)、Strategy(策略模式),所以说MVC模式又称复合模式。
Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
如果需要大量的数据处理servlet很合适,但是servlet对html的处理很冗长难以修改,这就是使用jsp的原因。将视图从复杂的数据和逻辑处理中解放出来。但是当jsp显示内容需要根据不同的需求生成差异较大的页面的时候我们就需要将jsp显示和servlet的逻辑处理结合起来。通常使用的模式是MVC模式。可以使每项技术发挥它最大的功效。初始请求由servlet来处理,调用逻辑和数据处理代码,并穿件bean来表示响应的结果(即模型)。然后servlet确定由哪个jsp页面显示比较合适并将请求转发到jsp(即视图)。servlet就是控制器。使用MVC的目的就是将逻辑操作和数据操作和显示代码分离。在相对较复杂的项目中使用框架是更好的更方便的选择。(Apache struts2)。但是相对于使用框架来说从头开始自己创建MVC的实现(使用RequestDispatcher请求转发)更直观更灵活。
3 遇到的问题
当然,在构建和使用MVC架构时也遇到了很多问题,如服务器找不到Servlet,这种多数情况是Servlet编写有错误,一般我是这样解决的:先重新创建一个Servlet文件,再把内容写进去,如果还是找不到,那有可能是Tomcat的事,重启服务器,如果还是不行的话,那就逐块逐行调试Sevlet中的内容,还有一种情况就是Servlet中没有加注解,但是一般创建时Eclipse会自动加上,如果改了Servlet的名字,还要注意名字与注解是否一致。
参考文献:
[1] Maxsu,【易百教程】MVC框架教程https://www.yiibai.com/mvc_framework/
[2] 一只码农-小俊 【知乎】超详细的!!!MVC架构模式说明https://zhuanlan.zhihu.com/p/417635345