SpringMVC的执行流程及组件详解

作者:熊猫两年后长大 时间:2021-06-17 23:29:21 

这篇文章主要介绍了SpringMVC的执行流程及组件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一、核心模块

数据库访问技术与集成:JDBC、XML等

Web与远程调用技术:SpringMVC、WebServlet、WebSocket等

面向切面编程:AOP

基础设施:Tomcat

Spring核心容器:Beans、Core、Context、Expression、ContestSupport

测试:Test

二、执行流程

1.用户通过页面发送Ajax之类的请求,DispatcherServlet捕获并解析用户发来的请求URL,得到请求资源标识符URI

2.DispatcherServlet根据URI调用HandlerMapping,HandlerMapping根据请求URL查找Handler,并将请求映射为HandlerExecutionChain处理器执行链(包含处理器 * 和处理器对象)

3.HandlerMapping返回HandlerExecutionChain给DispatcherServlet

4.DispatcherServlet根据获得的Handler选择HandlerAdapter,通过处理器适配器调用具体的处理器,HandlerAdapter把处理器包装为适配器,并开始执行 * 的preHandler()方法,并根据适配器的结果调用真正的处理器的功能处理方法

5.调用具体的处理器Handler,在填充Handler的入参过程中spring将会进行:执行HttpMessageConveter、数据转换、数据格式化、数据验证,调用具体的Controller完成处理功能,并返回一个ModelAndView对象

6.Controller返回ModelAndView对象到HandlerAdapter

7.HandlerAdapter再将ModelAndView对象的视图逻辑名或模型返回给DispatcherServlet

8.DispatcherServlet调用视图解析器ViewResolver来解析HandlerAdapter传递过来的逻辑视图名

9.ViewResolver将解析的逻辑视图名传递给DispatcherServlet

10.DispatcherServlet根据解析出的视图结果,调用具体的视图,根据传来的Model模型数据进行渲染

11.最后View返还控制权给DispatcherServlet,由DispatcherServlet返回最终视图给用户

三、核心组件

1.DispatcherServlet:前端控制器,控制中心

2.HandlerMapping:解析请求URL,解析出控制器,从而映射控制器,相关类有16个

3.HandlerAdapter:调度Controller来处理业务逻辑

4.ViewResolver:解析DispatcherServlet传递的逻辑视图名,并将结果传递给DispatcherServlet

来源:https://www.cnblogs.com/joker955/p/11854022.html

标签:spring,mvc,执行,流程,组件
0
投稿

猜你喜欢

  • MyBatis Generator介绍及使用方法

    2021-07-07 17:23:20
  • Java超详细分析泛型与通配符

    2023-07-28 08:34:26
  • C#将图片和字节流互相转换并显示到页面上

    2021-08-18 23:41:31
  • Android Fragment源码分析Add方法

    2023-02-12 19:13:58
  • Android​短信验证码倒计时验证的2种常用方式

    2022-06-23 17:27:42
  • C#集合查询Linq在项目中使用详解

    2022-09-16 13:50:09
  • Java硬币翻转倍数递增试算实例

    2021-09-29 08:39:22
  • maven工程中jar包瘦身的五种方法

    2023-11-04 05:01:54
  • 关于Spring中的三级缓存解析

    2022-08-20 15:31:06
  • 详解spring cloud ouath2中的资源服务器

    2022-09-24 15:36:43
  • C#实现导入CSV文件到Excel工作簿的方法

    2022-09-13 12:24:02
  • c#实现爬虫程序

    2023-04-19 18:59:14
  • Spring Security保护用户密码常用方法详解

    2023-01-24 17:06:18
  • java发送http请求并获取状态码的简单实例

    2023-12-06 00:59:14
  • Textvie实现左边图片和换行文字左对齐的方法

    2022-10-30 23:15:16
  • java实现基因序列比较的示例代码

    2022-01-03 02:32:22
  • Spring Boot中操作使用Redis实现详解

    2023-11-24 02:39:29
  • Android如何使用Bmob后端云实现失物招领功能

    2023-10-15 07:28:05
  • Java8通过Function获取字段名的步骤

    2022-07-14 14:06:23
  • java的Jackson将json字符串转换成泛型List

    2021-10-06 20:17:49
  • asp之家 软件编程 m.aspxhome.com