pringMVC的运行电路原理图:
SpringMVC步骤
1、 用户推送请求至前面控制板DispatcherServlet。
2、 DispatcherServlet接到请求启用HandlerMapping处理器映射器。
3、 处理器映射器寻找详细的处理器(可以依据xml配备、注释开展搜索),转化成处理器目标及处理器回调函数(如果有则转化成)一并回到给DispatcherServlet。
4、 DispatcherServlet启用HandlerAdapter处理器电源适配器。
5、 HandlerAdapter通过兼容启用实际的处理器(Controller,也叫后面控制板)。
6、 Controller实行进行回到ModelAndView。
7、 HandlerAdapter将controller实行結果ModelAndView回到给DispatcherServlet。
8、 DispatcherServlet将ModelAndView发送给ViewReslover视图在线解析。
9、 ViewReslover分析后回到实际View。
10、DispatcherServlet依据View开展3D渲染视图(将要实体模型数据信息添充至视图中)。
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开展3D渲染将处理意见根据网页页面展现给用户。 springmvc架构给予了许多的View视图种类,包含:jstlView、freemarkerView、pdfView等。
一般情形下必须根据网页页面标识或网页页面模板技术性将实体模型数据信息根据网页页面展现给用户,必须由技术工程师依据项目要求开发设计实际的网页页面。
6、视图View(必须技术工程师开发设计jsp…)
View是一个插口,完成类适用不一样的View种类(jsp、freemarker、pdf…)
关键构架的实际步骤流程如下所示:
1、最先用户推送请求——>DispatcherServlet,前面控制板接到请求后自已不做好解决,反而是授权委托给别的的在线解析开展解决,做为统一浏览点,开展全局性的过程操纵;
2、DispatcherServlet——>HandlerMapping, HandlerMapping 可能把请求投射为HandlerExecutionChain 目标(包括一个Handler 处理器(网页页面控制板)目标、好几个HandlerInterceptor 回调函数)目标,根据这类策略模式,非常容易加上新的投射对策;
3、DispatcherServlet——>HandlerAdapter,HandlerAdapter 可能把处理器包裝为电源适配器,进而适用各种类型的处理器,即电源适配器程序设计模式的运用,进而非常容易适用许多种类的处理器;
4、HandlerAdapter——>处理器作用解决办法的启用,HandlerAdapter 可能依据兼容的結果启用真真正正的处理器的作用解决方式,进行作用解决;并回到一个ModelAndView 目标(包括实体模型数据信息、逻辑性视图名);
5、ModelAndView的逻辑视图名——> ViewResolver, ViewResolver 将把逻辑性视图名分析为详细的View,根据这类策略模式,非常容易拆换别的视图技术性;
6、View——>3D渲染,View会依据传进去的Model实体模型数据信息开展3D渲染,这里的Model具体是一个Map算法设计,因而非常容易适用别的视图技术性;
7、回到决策权给DispatcherServlet,由DispatcherServlet回到回应给用户,到此一个步骤完毕。
下面2个组件一般来说必须开发设计:
Handler:处理器,即后面控制板用controller表明。
View:视图,即展现给用户的页面,视图中通常必须标识语言表达展现实体模型数据信息。
在将SpringMVC以前大家先来说一下什么叫MVC方式
MVC:MVC是一种程序设计模式
MVC的电路原理图:
剖析:
M-Model 实体模型(进行领域模型:有javaBean组成,service dao entity)
V-View 视图(做页面的展现 jsp,html……)
C-Controller 控制板(接受请求—>启用实体模型—>依据結果发放网页页面)
springMVC是啥:
springMVC是一个MVC的开源框架,springMVC=struts2 spring,springMVC就等于是Struts2再加上sring的融合,可是这儿有一个困惑便是,springMVC和spring是什么样的关联呢?这一在百科上有一个不错的表述:意思是说,springMVC是spring的一个后面商品,实际上便是spring在原来基本上,又给予了web应用的MVC控制模块,可以简便的把springMVC了解为是spring的一个控制模块(相近AOP,IOC那样的控制模块),互联网上常常要说springMVC和spring无缝拼接集成化,实际上springMVC便是spring的一个子控制模块,因此压根不用同spring开展融合。
SpringMVC的电路原理图:
见到这一图我们很有可能有许多的困惑,如今大家来说一下这一图的流程:(可以比照MVC的电路原理图开展了解)
第一步:用户进行请求到前面控制板(DispatcherServlet)
第二步:前面控制板请求处理器映射器(HandlerMappering)去搜索处理器(Handle):根据xml配备或是注释开展搜索
第三步:寻找之后处理器映射器(HandlerMappering)像前面控制板回到实行链(HandlerExecutionChain)
第四步:前面控制板(DispatcherServlet)启用处理器电源适配器(HandlerAdapter)去实行处理器(Handler)
第五步:处理器电源适配器去实行Handler
第六步:Handler执行完给处理器电源适配器回到ModelAndView
第七步:处理器电源适配器向前面控制板回到ModelAndView
第八步:前面控制板请求视图在线解析(ViewResolver)去开展视图分析
第九步:视图在线解析像前面控制板回到View
第十步:前面控制板对视图开展3D渲染
第十一步:前面控制板向用户回应結果
见到这种流程我坚信大伙儿很觉得十分的乱,这也是常规的,可是这儿主要是要大伙儿了解springMVC中的好多个组件:
前面控制板(DispatcherServlet):接收要求,回应結果,等同于计算机的CPU。
处理器映射器(HandlerMapping):依据URL去搜索处理器
处理器(Handler):(必须程序猿去敲代码解决逻辑性的)
处理器适配器(HandlerAdapter):会把处理器包裝成适配器,那样就可以适用各种类型的处理器,对比笔记本电脑的适配器(适配器方式的运用)
视图解析器(ViewResovler):开展视图解析,多回到的字符串数组,开展解决,可以解析成相应的网页页面
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。