SpringMVC原理

Spring MVC 原理

Spring MVC 框架的核心原理

image.png

  1. DispatcherServlet

    • Spring MVC 的入口是 DispatcherServlet,它是前端控制器(Front Controller)模式的实现。所有进入应用的HTTP请求首先被路由到 DispatcherServlet
  2. 请求分发

    • DispatcherServlet 接收到请求后,会调用一系列内部组件来处理请求。它首先通过 HandlerMapping 组件查找哪个处理器(即Controller方法)应该处理当前请求。
  3. HandlerMapping

    • 根据请求的URL、HTTP方法等信息,HandlerMapping(如 RequestMappingHandlerMapping)将决定具体由哪个Controller类及其方法来处理请求。
  4. Controller处理请求

    • 找到对应的Controller后,DispatcherServlet 通过 HandlerAdapter 去执行该Controller的方法,这个过程包括数据绑定(将请求参数绑定到Controller方法的入参上)、验证等。
  5. ModelAndView创建

    • Controller方法执行完成后,通常会返回一个 ModelAndView 对象,其中包含了视图名称以及要显示在页面上的模型数据。
  6. 视图解析

    • DispatcherServlet 接下来会将控制权交给 ViewResolver,用于根据 ModelAndView 中的视图名解析实际的视图技术(如JSP、Thymeleaf、Velocity等)并渲染视图。
  7. 数据填充与视图呈现

    • ViewResolver找到相应的视图后,会将 ModelAndView 中的模型数据填充到视图中,并最终将渲染后的HTML响应发送回客户端浏览器。
  8. 异常处理

    • 在整个过程中,如果发生任何异常,Spring MVC 提供了全局异常处理器(例如实现 HandlerExceptionResolver 接口的类)来捕获并处理这些异常,它可以生成适当的错误页面或错误消息。
  9. 拦截器(Interceptors)

    • Spring MVC 还支持自定义拦截器,可以在请求到达Controller之前或者离开Controller之后进行额外的预处理或后处理操作,增强了框架的功能性和可扩展性。

Spring MVC 的工作流程是一种典型的MVC架构模式的体现,通过这种解耦的方式,使得各层之间职责明确,方便开发和维护。同时,其强大的可配置性和扩展性让开发者可以根据需求灵活定制自己的Web应用程序。

Spring MVC核心架构的工作流程(文字概述)

image.png

  1. 用户请求

    • 首先,用户发送一个HTTP请求到DispatcherServlet,作为前端控制器,它接收到请求后并不直接处理,而是将其委托给其他组件进行处理,作为统一访问点,对全局流程进行控制。
  2. 转发至HandlerMapping

    • DispatcherServlet将请求转发至HandlerMapping组件。HandlerMapping负责将请求映射为一个HandlerExecutionChain对象,该对象包含一个处理器(页面控制器)和多个拦截器。通过策略模式设计,可以方便地添加新的映射策略。
  3. 适配并调用处理器

    • DispatcherServlet接着将请求传递给HandlerAdapterHandlerAdapter会将处理器适配为特定的接口实现,这样便能支持多种类型的处理器,体现了适配器设计模式的应用。
  4. 执行处理器方法

    • HandlerAdapter根据适配的结果调用实际处理器的功能处理方法。处理器执行完毕后返回一个ModelAndView对象,其中包含了模型数据以及逻辑视图名。
  5. 解析逻辑视图名

    • ModelAndView中的逻辑视图名被传递给ViewResolverViewResolver依据策略模式解析这个逻辑视图名成具体的视图实例。
  6. 视图渲染

    • 解析出的实际视图随后接收传入的模型数据(实际上是一个Map结构),并基于这些数据进行渲染生成最终的视图内容。
  7. 响应用户

    • 渲染完成后,控制权交还给DispatcherServlet,由DispatcherServlet将最终的响应结果返回给用户,至此,整个Spring MVC处理流程结束。
> 原文链接 <https://www.hanyuanhun.cn> | <https://node.hanyuanhun.cn>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值