• 3、SpringMVC执行原理


    1、SpringMVC比较完整的流程图

    图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

    2、执行原理解析

    1. DispatcherSerlvet表示前端控制器,是整个SpringMVC的控制中心。用户发起的请求,DispatcherSerlvet接收请求并拦截请求

    • 我们假设请求的url为:http://localhost:8080/SpringMVC/hello

    • 如上url拆分成三部分:

    • http://localhost:8080:为服务器域名

    • SpringMVC:是部署在服务器上的web站点

    • hello:表示控制器

    • 通过分析,如上url表示为:请求于服务器localhost:8080上的SpringMVC站点的hello控制器。

    1. HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求的url查找Handler。

    2. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。

    3. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。

    4. HanderAdapter表示处理器适配器,其按照特定的规则去指定Handler。

    5. Handler让具体的Controller执行

    6. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

    7. HandlerAdapter将试图逻辑名或模型传递给DispatcherServlet。

    8. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名

    9. 视图解析器将解析的逻辑视图名传给DispatcherServlet

    10. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

    11. 最终将视图呈现给用户。

     

    DIspatcherServlet是前端控制器,是整个SpringMVC的控制中心。在接收用户发起的请求后,Dispatcher会自行去调用处理器映射(HandlerMapping),它会根据请求的url查找处理器(Handler),HandlerExecution表示具体的处理器(Handler),它会根据url查找控制器,并将解析后的信息返回给DispatcherServlet。

    之后会有处理器适配器(HandlerAdapter),它会按照特定的规则去执行Handler,就是执行某个请求。特定的规则说白了就是去找控制器(Controller),只要是实现了Controller接口的它都会去适配一下,确定找到对应的控制器(Controller)。

    然后控制器调用业务层将具体的执行信息返回给处理器适配器,返回的信息也就是需要给前端的数据并且我要指定这个前端是谁。

    执行完这几步,它将请求处理完了,并且会携带一些数据(比如ModelAndView),又去找了DispatcherServlet

    DispatcherServlet会调用视图解析器(ViewResolver)来解析处理器适配器传递的信息。

    视图解析器做的事情就是获取了ModelAndView的数据,再解析ModelAndView的视图名字,并且拼接视图名,找到对应的视图,将数据渲染到视图上,之后它将解析的视图名传给DispatcherServlet。

    最后DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图,展现给用户。

     

    3、简单概括

    用户发起请求,经过DispatcherServlet,它是前端控制器,也是请求分发器,

    首先会去调用HandlerMapping处理器映射,HandlerMapping根据请求的url将映射到的类返回。

    然后会去调用处理器适配器HandlerAdapter,HandlerAdapter找到对应的控制器Controller(也就是对应的接口)去处理请求。

    之后控制器会调用具体的业务,将获取到的数据(比如封装在了一个ModelAndView对象里)交给视图解析器ViewResolver。

    最后视图解析器解析将获取到的数据,渲染到对应的视图上,呈现给用户。

    致力于记录学习过程中的笔记,希望大家有所帮助(*^▽^*)!
  • 相关阅读:
    并查集
    强联通分量,缩点
    最短路径
    最小生成树
    拓扑排序
    图的遍历
    图论基础知识
    数据库四种隔离级别
    MySQL 索引 乐观锁 悲观锁
    MYSQL+正则
  • 原文地址:https://www.cnblogs.com/zxhbk/p/12976240.html
Copyright © 2020-2023  润新知