首页 > 其他分享 >DispatcherServlet 请求处理流程

DispatcherServlet 请求处理流程

时间:2025-01-02 19:41:27浏览次数:5  
标签:返回 participant 请求 流程 HandlerAdapter Controller DispatcherServlet

继承关系

DispatcherServlet > FrameworkServlet > HttpServletBean > HttpServlet > GenericServlet > Servlet

Servlet 容器每次接收到请求时都会调用 service() 方法,子类 HttpServlet 复写了 service() 方法,内部会根据请求的类型(GET、POST 等)调用相应的 doGet()doPost() 等方法...

根据调用链分析,最终会交由 DispatcherServlet.doDispatch() 来处理

前后不分离请求处理流程

  1. 客户端请求:浏览器向服务器发起请求。
  2. DispatcherServlet 接收请求DispatcherServlet 作为前端控制器(Front Controller)接收请求。
  3. HandlerMappingDispatcherServlet 会通过 HandlerMapping 找到合适的处理器,其实返回的是一个处理器执行链(拦截器)。
  4. 找到能执行当前处理器的 HandlerAdapter
  5. HandlerAdapter:通过 HandlerAdapter 调用具体的 Controller 方法进行处理。
  6. 处理请求:Controller 处理请求并返回模型数据和视图信息。
  7. ViewResolverDispatcherServlet 根据 Controller 返回的视图名称,通过 ViewResolver 查找并渲染视图。
  8. 响应客户端:渲染后的视图返回给客户端。
sequenceDiagram participant Client participant DispatcherServlet participant HandlerMapping participant Handler participant HandlerAdapter participant ViewResolver participant View Client->>DispatcherServlet: 发起请求 DispatcherServlet->>HandlerMapping: 查找处理器 HandlerMapping->>DispatcherServlet: 返回 url 对应的处理器(HandlerChain) DispatcherServlet->>HandlerAdapter: 找到能执行该处理器的 HandlerAdapter HandlerAdapter->>Controller: HandlerAdapter 执行 Handler(controller 中的方法) Controller->>DispatcherServlet: 返回 ModelAndView DispatcherServlet->>ViewResolver: 解析视图 ViewResolver->>DispatcherServlet: 返回视图 DispatcherServlet->>Client: 返回视图给客户端

前后分离请求处理流程

  1. 客户端请求:浏览器或客户端发起请求。
  2. DispatcherServlet 接收请求DispatcherServlet 作为前端控制器接收请求。
  3. HandlerMappingDispatcherServlet 会通过 HandlerMapping 找到合适的处理器,其实返回的是一个处理器执行链(拦截器)。
  4. 找到能执行当前处理器的 HandlerAdapter
  5. HandlerAdapter:通过 HandlerAdapter 调用具体的 Controller 方法进行处理。
  6. 处理请求并返回数据:Controller 处理请求并返回数据(通常是一个 POJO 或 Map)。
  7. MessageConverterDispatcherServlet 使用 HttpMessageConverter 将返回的对象转换为 JSON 格式。
  8. 响应客户端:返回的 JSON 数据通过 HTTP 响应返回给客户端。
sequenceDiagram participant Client participant DispatcherServlet participant HandlerMapping participant Handler participant HandlerAdapter participant HttpMessageConverter Client->>DispatcherServlet: 发起请求 DispatcherServlet->>HandlerMapping: 查找处理器 HandlerMapping->>DispatcherServlet: 返回 url 对应的处理器(HandlerChain) DispatcherServlet->>HandlerAdapter: 找到能执行该处理器的 HandlerAdapter HandlerAdapter->>Controller: HandlerAdapter 执行 Handler(controller 中的方法) Controller->>DispatcherServlet: 返回数据(如 POJO) DispatcherServlet->>HttpMessageConverter: HttpMessageConverter 转换数据为 JSON HttpMessageConverter->>DispatcherServlet: 返回 JSON 数据 DispatcherServlet->>Client: 返回 JSON 数据

标签:返回,participant,请求,流程,HandlerAdapter,Controller,DispatcherServlet
From: https://www.cnblogs.com/cyrushuang/p/18648635

相关文章

  • DispatcherServlet 九大组件
    九大组件SpringMVC的DispatcherServlet是一个Servlet,所有请求都会由DispatcherServlet处理和响应DispatcherServlet这个类中九个重要的属性,每个属性有不同的作用,如下:/**文件上传解析器*/@NullableprivateMultipartResolvermultipartResolver;/**国际化解析器(根......
  • C# 中HttpWebRequest发起HTTP请求,如何设置才能达到最大并发和性能
    前言在C#中使用HttpWebRequest发起HTTP请求时,达到最大并发和性能可以从以下几个方面改进:1、ServicePointManager设置ServicePointManager类是一个静态类,它提供了用于管理HTTP连接的属性和方法。为了提升并发性能,你需要调整以下几个关键属性:DefaultConnectionLimit:默认情况......
  • 请讲讲使用Wireshark抓取ping命令的流程
    使用Wireshark抓取ping命令的流程对于前端开发人员来说,可能不是日常工作的直接内容,但了解网络层面的调试和诊断工具是很有帮助的。以下是使用Wireshark抓取ping命令的基本流程:一、准备工作安装Wireshark:确保你的计算机上已经安装了Wireshark。如果没有,可以从其官方网站下载并安......
  • AnnotationConfigApplicationContext流程看@Configuration,@ComponentScan,其它注解be
    目录AnnotationConfigApplicationContext测试代码手动注册第1个bean:LocalConfig手动注册第2个bean:LocalConfig2refresh方法执行前技巧refresh的postProcessBeanFactory方法refresh的invokeBeanFactoryPostProcessors(beanFactory);BeanDefinitionRegistry执行所有......
  • 设计一套全站请求耗时统计工具
    以下是一套可以用于全站请求耗时统计工具的设计方案,涵盖了从前端到后端的相关环节:一、整体架构该统计工具主要分为前端数据采集模块、数据传输模块以及后端数据处理与分析模块,整体架构如下:前端数据采集模块负责在用户端(浏览器)收集各个请求的相关信息,包括请求发起时间、请求完......
  • 如何解决页面请求接口大规模并发问题
    前端优化策略缓存数据浏览器缓存:合理利用浏览器缓存机制,通过设置正确的缓存头来减少不必要的接口请求。例如,对于那些不经常变化的数据(如网站的logo、样式文件等),可以设置较长时间的缓存。可以在服务器端返回数据时,在响应头中设置Cache-Control和Expires字段。如Cache-Cont......
  • SAP SD学习笔记22 - VF04,VF06,VF24 等一括请求处理
    上一篇学习了请求传票(发票)的拷贝管理。SAPSD学习笔记21-请求传票的数据流(拷贝管理)-CSDN博客本章继续学习SAPSD的内容。目录1,VF04-一括请求处理(开票到期清单)2,VF06-请求的BackgroundJob登录3,现场更倾向于用Add-on来批量处理请求书登录4,请求传票的实际情况与......
  • 网站遭遇短时间内大量非正常请求时,通过以下几种方式进行控制
    1.配置Nginx限流模块ngx_http_limit_req_module:这是Nginx内置的请求限制模块。首先,打开Nginx的主配置文件(通常是nginx.conf)或者对应的虚拟主机配置文件,添加如下代码示例来限制单个IP地址的请求频率:http{limit_req_zone$binary_remote_addrzone=mylimit:10mrate=1......
  • 【Python系列】处理空请求体Body
    ......
  • [Java/Spring] 深入理解:Spring Web DispatcherServlet
    1概述:SpringWebDispatcherServletDispatcherServlet简介org.springframework.web.servlet.DispatcherServlet是一个Servlet,它接收所有的HTTP请求,并根据请求的信息将其分发给相应的处理器(Handler)进行处理。它是SpringMVC架构模式中的关键部分,将请求处理逻辑与实际的......