• 浅谈SpringMVC的请求流程


    浅谈SpringMVC的请求流程

    对于SpringMVC而言重点是了解它的底层运行逻辑,从而可以根据其逻辑来进行实际业务的操作或者是利用原理增强业务的功能性,最终达到项目预期效果。

    SpringMVC的介绍

    SpringMVC是基于JavaWeb的一种应用程序的框架,他是Spring家族的一个成员。SpringMVC架构采用MVC(Model–View–Controller)的设计模式,旨在为构建松散耦合和灵活可扩展的Web应用程序提供支持

    特点如下:
    1.松耦合以及模块化:SpringMVC将应用程序分为控制器(Controller)、视图(View)、模型(Model)。三者各司其职,实现了逻辑的分离与模块化开发。
    2.灵活地处理请求:通过使用SpringMVC下提供的注解或者是在对应的配置文件中进行配置可以灵活地定义URL与控制器的映射关系,使得请求能够被响应的控制器进行处理。
    3.强大的数据绑定与验证:SpringMVC提供了强大的数据绑定以及验证机制,可以将请求参数自动绑定到我们的Java对象之中,并且可以对对象进行验证。
    4.视图解析与渲染:SpringMVC支持各种视图技术,例如JSP、Thymeleaf等。
    5.请求拦截与过滤:通过使用拦截器与过滤器可以使得开发者在开发阶段对请求进行逻辑处理等。
    6.容易集成其他的技术:SpringMVC框架可以与其他的框架相互配合,比如常常提起的SSM框架体系就有它的参与。以及SpringBoot等
    7.强大的测试支持:SpringMVC提供的测试框架,使得开发者进行单元测试与集成测试

    SpringMVC的逻辑概念运行图解

    SpringMVC底层运作逻辑图

    从上图可以看出这是一个基本的SpringMVC的运作逻辑结构图,可以看出当一个请求从浏览器发出后会经SpringMVC中的多个组件解析并处理。

    组件介绍:
    1.DispatcherServlet:这是一个中央处理器(也称前端控制器),用于拦截所有的前端请求进行处理,对Servlert技术熟悉的人都清楚在很早以前的JavaWeb的开发中我们前端发送来的请求与后端的Servlet是一一对应的,也就是说有多少个请求就会有多少个Servlet来进行处理,但是在SpringMVC中只会有一个Servlet那就是DispatcherServelt来进行处理,很明显使用SpringMVC优化了以前的开发技术。
    2.HandlerMapping(映射处理器):主要用于解析请求中的url中读取需要找到的控制器名称,方便后期寻找控制器进行响应。

    重点内容:SpringMVC的 运作过程分析:
    ①前端发送请求被前端控制器DispatcherServlet拦截
    ②DispatcherServlet调用映射处理器HandlerMapping对请求的URL进行解析处理,解析完过后将结果反馈给DispatcherServlet。
    ③DispatcherServlet调动适配处理器HandlerAdapter处理调用链(从控制器处理的请求反馈结果)
    ④DispatcherServlet基于反射技术通过适配器的设计模式完成从控制器(controller)的调用处理用户请求。
    ⑤HandlerAdapter将控制器(controller)返回的数据封装成ModelAndView对象响应给前端控制器DispatcherServlet。(值的一提的是,控制器的返回数据有两种类型,一种是String类型另外一种就是ModelAndView类型的数据,但是不管返回的数据结果是String还是ModelAndView最终的结果都会被封装成ModelAndView进行返回)。
    ⑥DispatcherServlet调用视图解析器ViewResolver对返回的结果ModelAndView进行解析处理,将解析结果处理成视图资源以及数据两部分,之后再次响应给DispatcherServlet。
    ⑦DispatcherServlet调用SpringMVC中的一个视图组件(View)将数据进行渲染,最后将渲染的结果(静态视图)响应给DispatcherServlet。
    ⑧最后再次由DispatcherServlet完成最后对前端用户的响应。

    知识总结

    只要学不死就往死里学,记得点赞。

  • 相关阅读:
    【代码随想录】Day 49 动态规划10 (买卖股票Ⅰ、Ⅱ)
    策略模式优雅实践
    Vue安装并使用axios发送请求
    Go/Golang语言学习实践[回顾]教程02--安装Go语言开发包
    如何用架构的思维为云原生做减法?
    Demo20快乐数
    驱动——gpio子系统(LED灯的操控实验)
    2023 “华为杯” 中国研究生数学建模竞赛(B题)深度剖析|数学建模完整代码+建模过程全解全析
    6款好用到爆的神级电脑软件,个个让人相见恨晚,堪称办公必备
    第8章 综合案例—构建DVD租赁商店数据仓库
  • 原文地址:https://blog.csdn.net/yongzhongyang/article/details/133163521