标签:返回 participant 请求 流程 HandlerAdapter Controller DispatcherServlet
继承关系
DispatcherServlet > FrameworkServlet > HttpServletBean > HttpServlet > GenericServlet > Servlet
Servlet
容器每次接收到请求时都会调用 service()
方法,子类 HttpServlet
复写了 service()
方法,内部会根据请求的类型(GET、POST 等)调用相应的 doGet()
、doPost()
等方法...
根据调用链分析,最终会交由 DispatcherServlet.doDispatch()
来处理
前后不分离请求处理流程
- 客户端请求:浏览器向服务器发起请求。
- DispatcherServlet 接收请求:
DispatcherServlet
作为前端控制器(Front Controller)接收请求。
- HandlerMapping:
DispatcherServlet
会通过 HandlerMapping
找到合适的处理器,其实返回的是一个处理器执行链(拦截器)。
- 找到能执行当前处理器的 HandlerAdapter
- HandlerAdapter:通过
HandlerAdapter
调用具体的 Controller 方法进行处理。
- 处理请求:Controller 处理请求并返回模型数据和视图信息。
- ViewResolver:
DispatcherServlet
根据 Controller 返回的视图名称,通过 ViewResolver
查找并渲染视图。
- 响应客户端:渲染后的视图返回给客户端。
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: 返回视图给客户端
前后分离请求处理流程
- 客户端请求:浏览器或客户端发起请求。
- DispatcherServlet 接收请求:
DispatcherServlet
作为前端控制器接收请求。
- HandlerMapping:
DispatcherServlet
会通过 HandlerMapping
找到合适的处理器,其实返回的是一个处理器执行链(拦截器)。
- 找到能执行当前处理器的 HandlerAdapter
- HandlerAdapter:通过
HandlerAdapter
调用具体的 Controller 方法进行处理。
- 处理请求并返回数据:Controller 处理请求并返回数据(通常是一个 POJO 或 Map)。
- MessageConverter:
DispatcherServlet
使用 HttpMessageConverter
将返回的对象转换为 JSON 格式。
- 响应客户端:返回的 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