MVC科技小论文
MVC架构
张伟豪
(石家庄铁道大学 河北省 石家庄市 050000)
摘要:MVC是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。本文主要讲述个人参与的涉及MVC架构的系统和期间遇到的问题以及如何去解决问题,最后则是关于MVC架构的主要技术和标准。
关键词:MVC;视图;模型;控制器
引言
架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。
1 MVC框架
1.1 框架介绍
应用于基于MVC架构模式的框架,常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:angularjs、reactjs、backbone;由MVC演化出了另外一些模式如:MVP、MVVM。
这里我们举例Spring MVC:
Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是两个核心:
处理器映射:选择使用哪个控制器来处理请求
视图解析器:选择结果应该如何渲染
通过以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。
1.2 个人学习
本学期我选了一门叫javaee的选课,在那门课里老师介绍了许多关于框架的知识,其中就有struts2和springMVC,并且让我们用相关框架编写一个简单的管理系统,这也让我对这些框架的结果原理有了一些基本的了解以及学会如何去使用它们。就struts2来说,他有一个名为action的类来实现前端和后台的 交互,并且这些action类还需要在它的struts.xml里配置。刚开始接触的时候我它的工作原理是完全不了解的,好在通过网上的资料和简单案例明白了它的作用就相当于servlet。
2 MVC架构技术和标准
2.1 原理
模型-视图-控制器模式,也称为MVC模式(Model View Controller)。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。它把软件系统分为三个基本部分:
模型(Model):负责存储系统的中心数据。
视图(View):将信息显示给用户(可以定义多个视图)。
控制器(Controller):处理用户输入的信息。负责从视图读取数据,控制用户输入,并向模型发送数据,是应用程序中处理用户交互的部分。负责管理与用户交互交互控制。
视图和控制器共同构成了用户接口。
且每个视图都有一个相关的控制器组件。控制器接受输入,通常作为将鼠标移动、鼠标按钮的活动或键盘输入编码的时间。时间被翻译成模型或试图的服务器请求。用户仅仅通过控制器与系统交互。
2.2 目的
实现一种动态的程序设计,使后序对程序的修改和扩展简化,并且使程序某一部分的重复利用称为可能。
通过对复杂度的简化,使程序结构更加直观。
将信息的内部表示与信息的呈现方式分离开来,并接受用户的请求。它分离了组件,并允许有效的代码重用。即,将模型和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保模型和视图的同步,一旦模型改变,视图应该同步更新。
2.3 特点
MVC重要特点就是两种分离:
视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)
视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。
优点:耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程化管理。
缺点:没有明确的定义;不适合小型,中等规模的应用程序;增加系统结构和实现的复用性;视图与控制器间的过于紧密的连接;视图对模型数据的低效率访问;一般高级的界面工具或构造器不支持模式
3 个人开发
这里主要介绍关于自己在使用MVC架构模式进行个人项目开发时所遇到的问题。就我个人来说最开始接触的MVC架构模式应该时jsp+servlet+javabean模式。Jsp作为视图,servlet最为控制器,javabean作为数据模型。那时候我才刚开始接触编程不久,最开始的案例也是老师在课上布置的一个curd实现,那时候对于怎么完成这个案例是完全没有头绪,不知道从jsp开始还是从后端开始。最重要的我完全不知道如何去联系前后端,应该如何去使用servlet把jsp和后端的代码联系起来是我那时最头疼的问题。后来学的东西越来越多,接触了struts2和springMVC,struts2有点类型servlet学起来还比较轻松,虽然最开始在配置struts.xml上出现了一些问题,好在后来理解了配置的原理,通过在接商品页面的表单格式配置action,然后在xml传递给对应的action类,最后xml文件通过接收到action类的返回来确定前端页面的显示,但后面的springMVC就比前面的要复杂许多,要想实现前后端联系需要配置许多文件。
Spring MVC乱码问题
在使用Spring MVC 做java Web 项目时,乱码问题时常都会出现,解决方法也不尽相同,有简单也有复杂的;如果加入了Spring框架之后就不一样了,可以采用Spring框架自带的过滤器CharacterEncodingFilter,这样可以大大减轻我们的工作量,即简单方便又容易理解,配置方式如下:在web.xml文件中filter的位置加上如下内容:
参考文献:
[1]基于JAVA开发Web应用中MVC模式分析 [J] . 廖宾 . 电子技术与软件工程 . 2020,第021期
[2] 基于MVC模式的Java Web开发与应用 [J] . 刘学超 . 商场现代化 . 2007,第05X期
[3] 基于MVC模式的 Java Web开发与应用 [J] . 刘学超 . 商场现代化 . 2007,第015期
[4] 基于MVC模式的Java Web应用设计 [J] . 张黎明 ,龚琪琳 . 计算机与现代化 . 2007,第002期
[5] 基于MVC模式的Java Web应用设计 [J] . 张黎明 . 甘肃科技 . 2006,第006期
[6] 基于MVC模式和Silverlight技术的WebGIS开发 [C] . 霍平 ,周永望 ,刘长松 . 2009中国地理信息产业论坛 . 2009
[7] 基于MVC模式的JavaWeb框架研究与应用 [A] . 边卫国 . 2006