springMVC

发布于:2025-04-01 ⋅ 阅读:(24) ⋅ 点赞:(0)

核心组件

  • DispatcherServlet:作为前端控制器,负责接收所有的 HTTP 请求,然后根据请求的信息将其分发给合适的处理器进行处理。它是整个 Spring MVC 框架的核心调度器,统筹各个组件之间的协作。
  • HandlerMapping:根据请求的 URL 等信息,将请求映射到具体的处理器(Handler)和对应的处理器拦截器(HandlerInterceptor)。它的作用是确定哪个处理器能够处理当前的请求。
  • HandlerAdapter:由于处理器的类型可能多种多样,HandlerAdapter 的作用就是将 DispatcherServlet 传递过来的请求适配到具体的处理器上进行处理。它负责调用处理器的处理方法,并返回处理结果。
  • Handler:即处理器,是实际处理请求的组件,通常是开发者编写的 Controller 类中的方法。它接收请求参数,调用业务逻辑进行处理,并返回处理结果。
  • ViewResolver:根据处理器返回的逻辑视图名,解析出实际的视图对象(View)。视图对象负责将处理结果渲染成最终的响应内容。
  • View:负责将模型数据渲染成客户端可以识别的格式,如 HTML、JSON、XML 等。常见的视图类型有 JSP、Thymeleaf 模板等。

执行流程、工作原理

  1. 客户端发送请求:客户端(如浏览器)向服务器发送 HTTP 请求,请求会被发送到 DispatcherServlet。
  2. DispatcherServlet 接收请求:作为前端控制器,DispatcherServlet 接收到所有的请求,并开始进行处理。
  3. HandlerMapping 映射处理器:DispatcherServlet 调用 HandlerMapping,根据请求的 URL 等信息,查找能够处理该请求的处理器(Handler)和对应的处理器拦截器(如果有)。HandlerMapping 会返回一个 HandlerExecutionChain 对象,该对象包含了处理器和拦截器。
  4. HandlerAdapter 适配处理器:DispatcherServlet 根据 HandlerMapping 返回的处理器,选择合适的 HandlerAdapter。HandlerAdapter 负责调用处理器的处理方法。
  5. 处理器处理请求:HandlerAdapter 调用具体的处理器(通常是 Controller 类中的方法),处理器接收请求参数,调用业务逻辑进行处理,并返回一个 ModelAndView 对象。ModelAndView 对象包含了模型数据和逻辑视图名。
  6. 返回 ModelAndView:处理器将处理结果封装在 ModelAndView 对象中,并返回给 HandlerAdapter,HandlerAdapter 再将其返回给 DispatcherServlet。
  7. ViewResolver 解析视图:DispatcherServlet 调用 ViewResolver,根据 ModelAndView 中的逻辑视图名,解析出实际的视图对象(View)。
  8. 视图渲染:DispatcherServlet 将模型数据传递给视图对象,视图对象根据模型数据进行渲染,生成最终的响应内容。
  9. 返回响应结果:视图对象将渲染后的响应内容返回给 DispatcherServlet,DispatcherServlet 将响应结果发送给客户端。

流程说明(重要):

  1. 客户端发送请求:前端通过浏览器或其他客户端工具发送 HTTP 请求,请求中包含了请求方法(GET、POST 等)、URL、请求头和请求体等信息。
  2. 前端控制器(DispatcherServlet)接收请求:Spring MVC 的前端控制器DispatcherServlet是整个框架的核心组件,它负责接收所有的 HTTP 请求。当请求到达时,DispatcherServlet会根据请求的 URL 和配置的映射关系,确定要调用的控制器(Controller)。
  3. 处理器映射(HandlerMapping):DispatcherServlet会使用处理器映射组件来确定哪个控制器方法应该处理当前请求。处理器映射通常根据请求的 URL、HTTP 方法和其他请求参数来查找对应的控制器方法。
  4. 控制器(Controller)处理请求:一旦确定了要调用的控制器方法,DispatcherServlet会调用该方法,并将请求参数传递给控制器。控制器方法负责处理业务逻辑,可能会与服务层、数据访问层等进行交互,以获取或更新数据。
  5. 视图解析(ViewResolver):控制器方法处理完请求后,通常会返回一个逻辑视图名或一个ModelAndView对象,其中包含视图名和模型数据。DispatcherServlet会使用视图解析器将逻辑视图名解析为实际的视图对象,例如 JSP、Thymeleaf 模板等。
  6. 视图渲染:视图对象负责将模型数据渲染成最终的响应内容,例如 HTML 页面、JSON 数据等。渲染后的响应内容会被发送回客户端。

总的来说,Spring MVC 通过前端控制器、处理器映射、控制器、视图解析器和视图等组件的协作,将前端的请求路由到后端的代码中进行处理,并最终生成响应返回给客户端。

参数解析映射在那个阶段

在 Spring MVC 中,参数解析映射主要发生在处理器适配器(HandlerAdapter)调用处理器(Handler)方法这个阶段。下面为你详细说明其所处的整体流程位置和具体工作情况:

整体流程位置

在 Spring MVC 的执行流程里,当 DispatcherServlet 借助 HandlerMapping 找到处理请求的处理器(Handler)和对应的拦截器之后,会选择合适的 HandlerAdapter。而参数解析映射就是在 HandlerAdapter 调用处理器方法时进行的,此阶段处于处理器处理请求的前期。

具体工作过程

  1. HandlerAdapter 适配与调用:DispatcherServlet 会根据 HandlerMapping 返回的处理器,挑选合适的 HandlerAdapter。HandlerAdapter 的职责是调用处理器的处理方法,在调用之前,它会负责对请求中的参数进行解析和映射。
  2. 参数解析器发挥作用:Spring MVC 拥有一系列的参数解析器(HandlerMethodArgumentResolver),这些解析器能够把请求中的不同类型的数据(如请求参数、请求头、Cookie、JSON 数据等)解析并映射到处理器方法的参数上。
    • 对于简单的请求参数(例如 http://example.com?name=John&age=25),RequestParamMethodArgumentResolver 会将 name 和 age 参数解析出来,并映射到处理器方法中对应的 @RequestParam 注解标注的参数上。
    • 若请求体是 JSON 数据,HttpMessageConverter 会把 JSON 数据转换为 Java 对象,然后由 RequestResponseBodyMethodProcessor 解析并映射到处理器方法中使用 @RequestBody 注解标注的参数上。
  3. 参数绑定到方法:参数解析器完成解析后,会把解析得到的值绑定到处理器方法的对应参数上,这样处理器方法就能使用这些参数进行业务逻辑处理了。

网站公告

今日签到

点亮在社区的每一天
去签到