1.Spring MVC - 框架介绍
2.Spring MVC - 启动过程详解
1.Spring Web MVC框架介绍
Spring框架提供了构造Web应用程序的全能MVC模块。
Spring框架图:
Spring Web MVC是一种基于Java实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们简化日常web系统的开发。
2.SpringMVC接口解释
2.1 DispatcherServlet接口
Spring提供的前端控制器,所有的请求都有经过它来统一分发。
在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
2.2 HandlerMapping接口
能够完成客户请求到Controller映射。
2.3 Controller接口
需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;
从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。
2.4 ViewResolver接口
Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。
2.5 View接口
View接口表示一个响应给用户的视图,例如jsp文件,pdf文件,html文件等。
3.SpringMVC运行原理
3.1 Http请求提交到DispatcherServlet
客户端的Http请求提交到DispatcherServlet。
3.2 DispatcherServlet寻找处理器
由DispatcherServlet控制器查询一个或多个HandlerMapping,找到并保存url请求和处理函数间的mapping关系。
3.3 DispatcherServlet适配处理器
DispatcherServlet通过HandlerAdapter来实际调用Controller。
3.4.Controller调用业务逻辑处理
Controller页面控制器接收到请求之后进行功能处理,首先需要收集、绑定请求参数到一个对象(命令对象),并进行验证,然后将该对象委托给业务对象进行处理(service层);业务对象处理之后控制器将返回一个ModelAndView(模型数据和逻辑视图名)。
3.5 ModelAndView
ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便一次返回这两个对象的holder。
Handler返回的ModelAndView中不包含真正的视图,只返回一个逻辑视图名称。
3.6 ViewResolver(视图解析器)
DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
ViewResolver就会把ModelAndView中的视图名称,解析为真正的视图View对象。
ViewResolver接口声明了resolverViewName方法,这个方法的主要功能是根据ModelAndView中给定的viewName信息,再结合相关的配置,创建出合适类型的View对象。
3.7 根据Model渲染视图
ViewResolver接口是在DispatcherServlet中进行调用的,当DispatcherServlet调用完Controller后,会得到一个ModelAndView对象,然后DispatcherServlet会调用render方法进行视图渲染。
3.8 返回渲染后的View
渲染后的View返回给客户端浏览器。