Bootstrap

MVC介绍

MVC介绍

1.什么是MVC
MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面,当然这种比较官方的解释是不能让我们足够清晰的理解什么是MVC的。用通俗的话来讲,MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。
在这里插入图片描述

2.为什么要使用MVC
程序通过将M(Model)和V(View)的代码分离,实现了前后端代码的分离,会带来几个好处

    (1)可以使同一个程序使用不同的表现形式,如果控制器反馈给模型的数据发生了变化,那么模型将及时通知有关的视图,视图会对应的刷新自己所展现的内容

    (2)因为模型是独立于视图的,所以模型可复用,模型可以独立的移植到别的地方继续使用

    (3)前后端的代码分离,使项目开发的分工更加明确,程序的测试更加简便,提高开发效率

    其实控制器的功能类似于一个中转站,会决定调用那个模型去处理用户请求以及调用哪个视图去呈现给用户

3.JavaWeb中MVC模式的应用
在JavaWeb程序中,MVC框架模式是经常用到的,举一个Web程序的结构可以更好的理解MVC的理念

    V:View视图,Web程序中指用户可以看到的并可以与之进行数据交互的界面,比如一个Html网页界面,或者某些客户端的界面,在前面讲过,MVC可以为程序处理很多不同的视图,用户在视图中进行输出数据以及一系列操作,注意:视图中不会发生数据的处理操作。

    M:Model模型:进行所有数据的处理工作,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

    C:Controller控制器:负责接受用户的输入,并且调用模型和视图去完成用户的需求,控制器不会输出也不会做出任何处理,只会接受请求并调用模型构件去处理用户的请求,然后在确定用哪个视图去显示返回的数据

4.Web程序中MVC模式的优点
耦合性低:视图(页面)和业务层(数据处理)分离,一个应用的业务流程或者业务规则的改变只需要改动MVC中的模型即可,不会影响到控制器与视图

    部署快,成本低:MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上

    可维护性高:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改

5.Spring MVC简介及特点
Spring MVC采用了松散耦合的可插拔组件结构,比其他的MVC框架更具有灵活性和扩展性,Spring MVC通过使用一套注解,使一个Java类成为前端控制器(Controller),不需要实现任何接口,同时,Spring MVC支持RES形式的URL请求,除此之外,Spring MVC在在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现。

    Spring MVC围绕DispatcherServlet(前端控制器)为中心展开,DispatcherServlet(前端控制器)是Spring MVC的中枢,和MVC的思想一样,它负责从视图获取用户请求并且分派给相应的处理器处理,并决定用哪个视图去把数据呈现给给用户

Spring MVC特点

    1:让我们能非常简单的设计出干净的Web层和薄薄的Web层;

    2:进行更简洁的Web层的开发;

    3:天生与Spring框架集成(如IoC容器、AOP等);

    4:提供强大的约定大于配置的契约式编程支持;

    5:能简单的进行Web层的单元测试;

    6:支持灵活的URL到页面控制器的映射;

    7:非常容易与其它视图技术集成,如Velocity、FreeMarker等,因为模型数据不放在特定的API里,而是放在一 个Model里(Map数据结构实现,因此很容易被其他框架使用);

    8:非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;

    9:提供一套强大的JSP标签库,简化JSP开发;

    10:支持灵活的本地化、主题等解析;

    11:更加简单的异常处理;

    12:对静态资源的支持; 支持Restful风格。

6.springMVC和spring的关系
  (1)Spring和SpringMVC是父子容器关系。

(2)Spring整体框架的核心思想是容器,用来管理bean的生命周期,而一个项目中会包含很多容器,并且它们分上下层关系,目前最常用的一个场景是在一个项目中导入Spring和SpringMVC框架,而Spring和SpringMVC其实就是两个容器,Spring是父容器,SpringMVC是子容器,Spring父容器中注册的Bean对SpringMVC子容器是可见的,反之则不行。

(3)按照官方文档推荐,根据不同的业务模块来划分不同的容器中注册不同的Bean,SpringMVC主要就是为我们构建web应用程序,那么SpringMVC子容器用来注册web组件的Bean,如控制器、处理器映射、视图解析器等。而Spring用来注册其他Bean,这些Bean通常是驱动应用后端的中间层和数据层组件。

;