SpringMVC与SpringBoot响应请求的流程

SpringMVC是基于Servlet的MVC模型,Model:一个或多个javabean对象,用于存储数据和业务逻辑;View:一个或多个jsp页面,拿到控制器提交的数据为模型提供数据显示;Controller:一个或多个servlet对象,根据视图提交的请求进行控制。

 SpringMVC 的执行流程如下。

  1. 用户点击某个请求路径,发起一个 HTTP request 请求,该请求会被提交到 DispatcherServlet(前端控制器);
  2. 由 DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
  3. DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
  4. HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(常称为 Controller);
  5. Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
  6. HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet ;
  7. DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
  8. ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
  9. DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
  10. 视图负责将结果显示到浏览器(客户端)。

Spring MVC接口

Spring MVC 涉及到的组件有 DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。下面对各个组件的功能说明如下。

1)DispatcherServlet

DispatcherServlet 是前端控制器,从图 1 可以看出,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。DispatcherServlet 相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。

2)HandlerMapping

HandlerMapping 是处理器映射器,其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息。

3)HandlerAdapter

HandlerAdapter 是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)。

4)Handler

Handler 是处理器,和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。

5)View Resolver

View Resolver 是视图解析器,其作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。

6)View

View 是视图,其本身是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Excel 等)。

以上组件中,需要开发人员进行开发的是处理器(Handler,常称Controller)和视图(View)。通俗的说,要开发处理该请求的具体代码逻辑,以及最终展示给用户的界面。

SpringBoot启动流程:

1、首先从main找到run()方法,在执行run()方法之前new一个SpringApplication对象
2、进入run()方法,创建应用监听器SpringApplicationRunListeners开始监听
3、然后加载SpringBoot配置环境(ConfigurableEnvironment),然后把配置环境(Environment)加入监听对象中
4、然后加载应用上下文(ConfigurableApplicationContext),当做run方法的返回对象
5、最后创建Spring容器,refreshContext(context),实现starter自动化配置和bean的实例化等工作。
容器包含关系:

 

请求处理主要流程
1、过滤器链chain.doFilter之前的执行(过滤器是在Server容器中的,如Tomcat);
2、拦截器链preHandle方法执行;
3、路径映射、参数绑定(参数解析、参数转换、参数校验);
4、Controller的具体方法执行;
5、返回值处理(含信息转换);
6、拦截器链postHandle方法执行;
7、异常解析器处理异常(@ControllerAdvice、自定义异常解析器都在这里执行);
8、视图解析渲染;
9、拦截器链afterCompletion方法执行;
10、过滤器链chain.doFilter之后的执行。


一个完整的SpringBoot请求流程:

1、由前端发起请求

2、根据路径,Springboot会加载相应的Controller进行拦截

3、拦截处理后,跳转到相应的Service处理层

4、跳转到ServiceImplement(service实现类)

5、在执行serviceimplement时会加载Dao层,操作数据库

6、再跳到Dao层实现类

7、执行会跳转到mapper层

8、然后MallMapper会继续找对应的mapper.xml配置文件,之后便会跳转到第4步继续执行,执行完毕后会将结果返回到第1步,然后便会将数据以JSON的形式返回到页面,同时返回状态码,正常则会返回200,便会回到步骤1中查询判断。如果判断正常。前端根据数据遍历显示

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SpringMVC是一种模型视图控制器(MVC)框架架构,它使用模型视图控制器模式来实现Web应用程序的前后端分离,以提高代码复用性和可维护性。SpringBoot是一种基于Spring框架的轻量级框架,旨在快速创建可运行的Spring应用程序,提供自动配置,以及可管理的依赖项。 ### 回答2: Spring MVC和Spring Boot是两个不同的框架,分别是Spring Framework的一部分。 Spring MVC是一个基于Java的Web框架,用于开发Web应用程序。它提供了一种MVC架构模式的实现,用于将应用程序分成三个组件:模型(Model)、视图(View)和控制器(Controller)。Spring MVC使用注解和配置文件的方式来管理请求映射、视图解析和异常处理等方面的逻辑,以提供灵活和可扩展的特性。开发人员需要手动配置和管理整个应用的各个方面。 Spring Boot是一个用于创建独立的、生产级的Spring应用程序的框架。它旨在简化Spring应用程序的配置和部署过程,提供集成了多个常用框架的“开箱即用”功能。Spring Boot使用约定优于配置的原则,通过自动配置和起步依赖简化了开发人员的工作。开发人员只需定义一些基本配置,就可以让Spring Boot自动完成剩下的工作,从而提高开发效率。 因此,Spring MVC和Spring Boot的主要区别在于它们的设计理念和功能。Spring MVC是一个Web框架,着重于处理Web请求响应,需要手动配置和管理各个方面。而Spring Boot是一个整合了多种框架的应用程序框架,通过自动配置和起步依赖简化了开发过程,提高了开发效率。 ### 回答3: Spring MVC和Spring Boot都是Spring框架的一部分,用于开发Java应用程序。它们之间的区别可以从以下几个方面来看。 1. 配置方面:Spring MVC需要手动配置大量的XML文件或注解来设置Bean、路由和拦截器等,而Spring Boot采用了自动配置的方式,只需要少量的配置即可,大大简化了配置工作。 2. 依赖管理方面:Spring MVC需要手动管理依赖的版本和冲突,而Spring Boot使用了约定大于配置的原则,内置了一组默认的依赖版本,并能够自动解决依赖的冲突问题。 3. 启动方式:Spring MVC项目需要部署到Web容器中,如Tomcat,然后再启动容器;而Spring Boot项目可以使用内嵌的Web容器,如内嵌的Tomcat,可以直接通过命令行或IDE启动整个应用程序,简化了部署流程。 4. 开发效率方面:Spring Boot集成了大量常用的第三方库和工具,如Spring Data、Spring Security等,可以快速开发出功能完善的应用程序;而Spring MVC需要手动集成这些组件,开发效率较低。 5. 微服务方面:由于Spring Boot的快速开发和简化部署的特点,它更适用于构建微服务架构的应用程序。而Spring MVC更适用于传统的单体应用程序。 总之,Spring Boot是基于Spring框架的一种简化和快速开发的方式,相比于Spring MVC,它具有更简单的配置、更方便的部署和更高的开发效率。但是,在一些特定的场景下,如传统的单体应用程序开发,Spring MVC仍然是一个非常好的选择。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值