SpringMVC-04-执行流程

2.4 Spring MVC执行流程
2.4.1 SpringMVC 的执行流程图如下。

在这里插入图片描述

  1. 用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器);

解释url请求个段的意义:http://localhost:8080/projectname/login
http://localhost:8080服务器域名
-/projectname部署在服务器上的web站点
/login表示控制器
url表示为请求位于服务器http://localhost:8080上的/projectname站点里的/login控制器

  1. 由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
  2. DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
  3. HandlerAdapter 根据 Handler 信息按照特定的规则(实现了Controller的实现类都会适配下)找到并执行相应的 Handler(常称为 Controller);
  4. Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
  5. HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;adapter是用这个类了,映射器是找
  6. DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
  7. ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;使得DispatcherServlet通过它可以知道刚才控制器返回的"helloworld"到底是哪个页面
  8. DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
  9. 视图负责将结果显示到浏览器(客户端)。
2.4.2 组件介绍
  • 这个过程涉及的组件有 DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。下面对各个组件的功能说明如下。

  • DispatcherServlet

DispatcherServlet 是前端控制器,从上图 看出,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。DispatcherServlet 相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。即:接收请求,将请求转发给对应的控制器,接收控制器的处理结果,最终决定由哪个视图完成响应

  • HandlerMapping

HandlerMapping 是处理器映射器,其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。即:处理请求路径与处理器的映射关系

  • HandlerAdapter

HandlerAdapter 是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则(实现了Controller的实现类都会适配下)执行相关的处理器(Handler)。

  • Handler-Controller

Handler 是处理器,和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。即:实际处理请求的组件,例如接收请求参数,决定最终是转发或重定向的方式来响应

  • ModelAndView

控制器的处理结果,其中的Model表示转发的数据(如果是重定向,则Model没有意义),而View表示最终负责响应的视图组件的名称

  • View Resolver

View Resolver 是视图解析器,其作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。使得DispatcherServlet通过它可以知道刚才控制器返回的"helloworld"到底是哪个页面

  • View

View 是视图,其本身是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Excel 等)。

  • 程序猿要开发的是处理器(Handler,常称Controller)和视图(View)。也就是,开发处理该请求的具体代码逻辑,以及最终展示给用户的界面。
下一篇:SpringMVC-05-视图解析器(ViewResolver)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值