1.概念
MVC是一个架构(设计模式),它强制性使应用程序的输入、处理和输出分开。将一个应用程序分为3个部分:Model、View、Controller
- Model:负责完成业务逻辑,由JavaBean构成,在MVC的三个部件中,模型拥有最多的处理任务。由于应用于模型的代码只需要写一次就可以被多个视图重用,因此减少了代码的重复性
- View:负责与用户交互的界面,一般由HTML,CSS元素组成的界面,在视图层没有真正的处理发生,只负责数据输出,并允许用户操纵的方式
- Controller:负责接受请求 -> 调用模型 -> 根据结果派发页面并经过模型处理返回相应数据
2.MVC的优点
(1)分工明确:使用MVC可以把数据库开发、程序业务逻辑开发、页面开发,每一个层都具有相同的特征,方便以后的代码维护
(2)松耦合:视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码
(3)复用性高:像多个视图能够共享一个模型,无论视图层是用flash界面还是wap界面,用一个模型就可以处理
3.MVC的缺点
(1)可能会导致级联的修改
(2)降低了系统的性能
(3)不适合小型或者中等规模的应用程序
4.什么是Spring MVC
是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架
5.Spring MVC执行流程
(1)用户发送请求到前端控制器DispatcherServlet
(2)DispatcherServlet接收到请求调用HandlerMapping(处理器映射器)
(3)HandlerMapping找到具体的处理器,生成处理器对象即处理器拦截器,在返回给DispatcherServlet
(4)DispatcherServlet调用HandlerAdapter(处理器适配器)
(5)HandlerAdapter经过适配调用具体的处理器(Handler/Controller)
(6)Controller执行完成返回ModelAndView对象
(7)HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
(8)DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)
(9)ViewReslover解析后返回具体View(视图)
(10)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
(11)DispatcherServlet响应用户
组件分析:
- 前端控制器:DispatcherServlet,由框架提供,在web.xml中配置
作用:接收请求,响应结果,相当于转发器,中央处理器 - 处理器:Handler
作用:接受用户请求信息,调用业务方法处理请求,也称后端控制器 - 视图解析器:ViewResolver,由框架提供
作用:进行视图解析,将逻辑视图名称解析成真正的物理视图 - 视图:View
作用:将数据展现给用户的页面,是一个接口,实现类支持不同的View技术
6.Spring MVC的三大组件
(1)处理器映射器
作用:
通过处理器映射,可以将Web请求映射到正确的处理器上 。当接收到请求时,DispactherServlet 将请求交给 HandlerMapping 处理器映射,让它检查请求并找到一个合适的HandlerExecutionChain,这个HandlerExecutionChain 包含一个能处理该请求的处理器 Controller。然后,DispactherServlet 执行在HandlerExecutionChain 中的处理器 Controller
(2)处理器适配器
作用:
HandlerAdapter字面上的意思就是处理适配器,它的作用用一句话概括就是调用具体的方法对用户发来的请求来进行处理。当HandlerMapping获取到执行请求的Controller时,DispatcherServlte会根据Controller对应的Controller类型来调用相应的HandlerAdapter来进行处理
(3)视图解析器
作用:
Spring MVC中的视图解析器的主要作用就是将逻辑视图转换成用户可以看到的物理视图。当用户对SpringMVC应用程序发起请求时,这些请求都会被Spring MVC的DispatcherServlet处理,通过处理器找到最为合适的HandlerMapping定义的请求映射中最为合适的映射,然后通过HandlerMapping找到相对应的Handler,然后再通过相对应的HandlerAdapter处理该Handler。返回结果是一个ModelAndView对象,当该ModelAndView对象中不包含真正的视图,而是一个逻辑视图路径的时候,ViewResolver就会把该逻辑视图路径解析为真正的View视图对象,然后通过View的渲染,将最终结果返回给用户。SpringMVC中处理视图最终要的两个接口就是ViewResolver和View,ViewResolver的作用是将逻辑视图解析成物理视图,View的主要作用是调用其render()方法将物理视图进行渲染