SpringMVC⼯作流程及其原理
1、序⾔
⼀、什么是SpringMVC?
pring 配备构建Web 应⽤的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架⽤控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的⽅式把请求参数和业务对象绑定。
spring mvc是⼀个基于mvc的web框架。spring mvc是spring框架的⼀个模块,springmvc和spring⽆需通过中间整合层进⾏整合。⼆、为什么要使⽤SpringMVC?
很多应⽤程序的问题在于处理业务数据的对象和显⽰业务数据的视图之间存在紧密耦合,通常,更新业务对象的命令都是从视图本⾝发起的,使视图对任何业务对象更改都有⾼度敏感性。⽽且,当多个视图依赖于同⼀个业务对象时是没有灵活性的。
SpringMVC是⼀种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使⽤了MVC架构模式的思想,将Web层进⾏职责解耦。基于请求驱动指的就是使⽤请求-响应模型,框架的⽬的就是帮助我们简化开发,SpringMVC也是要简化我们⽇常Web开发。
2、正⽂
⼀、SpringMVC⼯作流程
SpringMVC⼯作流程图:
SpringMVC⼯作流程:
springmvc常用标签1、 ⽤户发送请求⾄前端控制器DispatcherServlet。
2、 DispatcherServlet收到请求调⽤HandlerMapping处理器映射器。
3、 处理器映射器到具体的处理器(可以根据xml配置、注解进⾏查),⽣成处理器对象及处理器(如果有则⽣成)⼀并返回给DispatcherServlet。(HandlerExecutionChain 包含handler和interceptors。
处理器适配器去执⾏Handler,执⾏⽬标⽅法前后是需要执⾏的)
4、 DispatcherServlet调⽤HandlerAdapter处理器适配器。
5、 HandlerAdapter经过适配调⽤具体的处理器(Controller,也叫后端控制器)。
6、 Controller执⾏完成返回ModelAndView。
7、 HandlerAdapter将controller执⾏结果ModelAndView返回给DispatcherServlet。
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9、 ViewReslover解析后返回具体View。
10、DispatcherServlet根据View进⾏渲染视图(即将模型数据填充⾄视图中)。
11、 DispatcherServlet响应⽤户。
组件说明:
以下组件通常使⽤框架提供实现:
DispatcherServlet:作为前端控制器,整个流程控制的中⼼,控制其它组件执⾏,统⼀调度,降低组件之间的耦合性,提⾼每个组件的扩展性。
HandlerMapping:通过扩展处理器映射器实现不同的映射⽅式,例如:配置⽂件⽅式,实现接⼝⽅式,注解⽅式等。
HandlAdapter:通过扩展处理器适配器,⽀持更多类型的处理器。
ViewResolver:通过扩展视图解析器,⽀持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。
组件:
1、前端控制器DispatcherServlet(不需要⼯程师开发),由框架提供
作⽤:接收请求,响应结果,相当于转发器,中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。
⽤户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中⼼,由它调⽤其它组件处理⽤户的请
求,dispatcherServlet的存在降低了组件之间的耦合性。
2、处理器映射器HandlerMapping(不需要⼯程师开发),由框架提供
作⽤:根据请求的url查Handler
HandlerMapping负责根据⽤户请求到Handler即处理器,springmvc提供了不同的映射器实现不同的映射⽅式,例如:配置⽂件⽅式,实现接⼝⽅式,注解⽅式等。
3、处理器适配器HandlerAdapter
作⽤:按照特定规则(HandlerAdapter要求的规则)去执⾏Handler
通过HandlerAdapter对处理器进⾏执⾏,这是适配器模式的应⽤,通过扩展适配器可以对更多类型的处理器进⾏执⾏。
4、处理器Handler(需要⼯程师开发)
注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执⾏Handler
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的⽤户请求进⾏处理。
由于Handler涉及到具体的⽤户业务请求,所以⼀般情况需要⼯程师根据业务需求开发Handler。
5、视图解析器View resolver(不需要⼯程师开发),由框架提供
作⽤:进⾏视图解析,根据逻辑视图名解析成真正的视图(view)
View Resolver负责将处理结果⽣成View视图,View Resolver⾸先根据逻辑视图名解析成物理视图名即具体的页⾯地址,再⽣成View视图对象,最后对View进⾏渲染将处理结果通过页⾯展⽰给⽤户。 springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。
⼀般情况下需要通过页⾯标签或页⾯模版技术将模型数据通过页⾯展⽰给⽤户,需要由⼯程师根据业务需求开发具体的页⾯。
6、视图View(需要⼯程师开发)
View是⼀个接⼝,实现类⽀持不同的View类型(jsp、freemarker、)
核⼼架构的具体流程步骤如下:
1、⾸先⽤户发送请求——>DispatcherServlet,前端控制器收到请求后⾃⼰不进⾏处理,⽽是委托给其他的解析器进⾏处理,作为统⼀访问点,进⾏全局的流程控制;
2、DispatcherServlet——>HandlerMapping, HandlerMapping 将会把请求映射为HandlerExecutionChain 对象(包含⼀个Handler 处理器(页⾯控制器)对象、多个HandlerInterceptor )对象,通过这种策略模式,很容易添加新的映射策略;
3、DispatcherServlet——>HandlerAdapter,HandlerAdapter 将会把处理器包装为适配器,从⽽⽀持多种类型的处理器,即适配器设计模式的应⽤,从⽽很容易⽀持很多类型的处理器;
4、HandlerAdapter——>处理器功能处理⽅法的调⽤,HandlerAdapter 将会根据适配的结果调⽤真正
的处理器的功能处理⽅法,完成功能处理;并返回⼀个ModelAndView 对象(包含模型数据、逻辑视图名);
5、ModelAndView的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
6、View——>渲染,View会根据传进来的Model模型数据进⾏渲染,此处的Model实际是⼀个Map数据结构,因此很容易⽀持其他视图技术;
7、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给⽤户,到此⼀个流程结束。
下边两个组件通常情况下需要开发:
Handler:处理器,即后端控制器⽤controller表⽰。
View:视图,即展⽰给⽤户的界⾯,视图中通常需要标签语⾔展⽰模型数据。
⼆、SpringMVC原理
SpringMVC的原理图:
第⼀步:⽤户发起请求到前端控制器(DispatcherServlet)
第⼆步:前端控制器请求处理器映射器(HandlerMappering)去查处理器(Handle):通过xml配
置或者注解进⾏查
第三步:到以后处理器映射器(HandlerMappering)像前端控制器返回执⾏链(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)调⽤处理器适配器(HandlerAdapter)去执⾏处理器(Handler)
第五步:处理器适配器去执⾏Handler
第六步:Handler执⾏完给处理器适配器返回ModelAndView
第七步:处理器适配器向前端控制器返回ModelAndView
第⼋步:前端控制器请求视图解析器(ViewResolver)去进⾏视图解析
第九步:视图解析器像前端控制器返回View
第⼗步:前端控制器对视图进⾏渲染
第⼗⼀步:前端控制器向⽤户响应结果
看到这些步骤我相信⼤家很感觉⾮常的乱,这是正常的,但是这⾥主要是要⼤家理解springMVC中的⼏个组件:
前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。
处理器映射器(HandlerMapping):根据URL去查处理器
处理器(Handler):(需要程序员去写代码处理逻辑的)
处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以⽀持多种类型的处理器,类⽐笔记本的适配器(适配器模式的应⽤)
视图解析器(ViewResovler):进⾏视图解析,多返回的字符串,进⾏处理,可以解析成对应的页⾯
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论