一、Spring MVC的工作原理图
二、Spring MVC流程
-
用户发送请求至前端控制器DispatcherServlet
-
DispatcherServlet收到调用HandllerMapping处理映射器
-
处理映射器收到具体的处理器(可以根据XML配置、注释进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返给DispatchServlet
-
DispatcherServlet调用HandlerAdapter处理器适配器
-
HandllerAdapter经过适当调用具体的处理器(Controller,也叫后端控制器)
-
Controller执行完成返回ModelAndView
-
HandllerAdapter将controlloer执行结果ModelAndView返回给DispatcherServlet
-
DispatcherServlet将ModelAndView传给ViewReslover视图解析器
-
ViewReslover解析后返回具体View
-
DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)
-
DispatcherServlet响应用户
三、组件说明
一下组件通常使用框架提供实现:
-
DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其他组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性
-
HandllerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
-
HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器
-
ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、Excel等
四、各个组件的作用
-
前端控制器DispatcherServlet(不需要工程师开发,由框架提供)
作用:接收请求,响应结果,相当于转发器,中央处理器。可以降低与其他组件之间的耦合度
-
处理器映射器HandllerMapping(不需要工程师开发),由框架提供
作用:根据请求的URL查找Handller,HandllerMapping负责根据用户的请求找到Handller即处理器,Soring MVC提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等
-
处理适配器HandllerAdapter
作用:按照特定规则(HandllerAdapter要求的规则)去执行Handler,通过HandllerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多烈性的处理器进行执行。
-
处理器Handler(需要工程师开发)
注意:编写Handler时按照HandlerAdapter的要求去开发,这样适配器才可以去正确执行Handller,Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对据图的用户请求进行处理,由于Handller涉及到具体的用户业务请求,所以一般情况需要工程师根据业务需求开发Handler
-
视图解析器ViewResolver(不需要工程师开发),由框架提供
作用:进行视图解析,根据逻辑视图名解析成真正的视图(View),ViewResolver负责将处理结果生成View视图,ViewResovler首先根据逻辑实体名解析成物理实体名成物理视图名即具体的页面地址,在生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。Spring MVC框架提供了很多的View视图类型,包括jstView、pdfView
-
视图View(需要工程师开发)
View是一个接口,实现类支持不同的View类型(JSP、pdf)
五、MVC模式
MVC:MVC是一种设计模式
MVC的原理图:
-
M-Model 模型(完成业务逻辑:有JavaBean构成,service+dao+entity)
-
V-View 视图(做界面的展示:jsp、html)
-
C-Controller (接收请求——>调用模型——>根据结果派发页面(servlet))
六、Spring MVC是什么
Spring MVC是一个MVC的开源框架,Spring MVC = Struts2+spring,Spring MVC就相当于是Struts2加上spring的整合,但是这里有一疑惑是Spring MVC和Spring是什么样的关系呢。Spring MVC是Spring的一个后续产品,其实就是Spring在原有基础上,又提供了Web应用的MVC模块,可以简单的把Spring MVC理解为是Spring的一个模块(类似于AOP、IOC这样的模块)。
七、Spring MVC的处理流程
-
用户发起请求到前端控制器(DispatcherServlet)
-
前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handle):通过XML配置或者注解进行查找
-
找到以后处理器映射器(HandlerMapping)像前端控制器返回执行链
-
前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去处理器(Handler)
-
处理器适配器去执行Handler
-
Handler执行完给处理适配器返回ModelAndView
-
处理器适配器向前端控制器返回ModelAndView
-
前端控制器请求视图解析器(ViewResolver)去执行视图解析
-
视图解析器像前端控制器返回View
-
前端控制器对视图进行渲染
-
前端控制器向用户响应结果
八、重要的组件
-
前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
-
处理器映射器(HandlerMapping):根据URL去查找处理器
-
处理器(Handler):(需要程序员去写代码处理逻辑的)
-
处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)
-
视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面
原文请参考:https://www.cnblogs.com/xiaoxi/p/6164383.html