1,什么是MVC
mvc(Model View and Contoller)是一种软件设计的框架模式,他用这种方式把数据(model),业务逻辑(controller),界面显示(view)分离开来
2,为什么要用MVC?
(1)可以使用同一个程序的不同表现形式,如果控制器返回给model的数据发生了变化,那么模型将及时通知有关的视图,视图会对应的刷新自己所展现的内容
(2)因为模型是独立于视图的,所以模型可以移植到其他地方继续使用
(3)前后端的代码分离,使开发分工明确
3,Java Web中的MVC
(1)M:模型,进行所有的数据处理工作,被模型返回的数据是中立的,模型与数据格式无关,一个模型可以为多个视图提供数据,提高了代码复用性
(2)V:视图,指web程序中可以与用户交互的界面(html页面)
(3)C:控制器负责接收用户输入,并且调用模型和视图来满足用户的需求,控制器不会输出也不会做出任何处理,只会接受请求并调用模型构件处理用户的请求,然后决定用哪个视图展现给用户
4,Spring MVC请求过程
(1)用户发送请求到前端控制器DispatcherServlet
(2)DispatcherServlet 收到请求调用HandlerMapping 处理器映射器
(3)HandlerMapping根据请求URL找到对应的handler,返回给DispatcherServlet
(4)DispatcherServlet根据handler调用HandlerAdapter处理适配器
(5)HandlerAdapter根据handler执行处理器,也就是controller层写的业务逻辑,返回一个ModelAndView
(6)HandlerAdapter把ModelAndView返回到DispatcherServlet
(7)DispatcherServlet调用视图解析器viewResolver来解析ModelAndView
(8)viewResolver解析ModelAndView并返回真正的view给DispatcherServlet
(9)DispatcherServlet将得到的视图进行渲染,填充到request域内
(10)返回给客户端响应结果
由此可见,MVC处理请求是以前端控制器DispatcherServlet为核心的