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


猜你喜欢
- 我们都知道,当RecyclerView数据源更新后,还需要通过adapter调用对应的方法,从而让RecyclerView重新绘制页面本次也
- 在使用java项目时,如果没有详细的管理和辅助流程,就会像程序失去了系统的调配一样。在java中有一种专门管理项目的工具,叫做maven,除
- 一、JMH vs JMeterJMeter可能是最常用的性能测试工具。它既支持图形界面,也支持命令行,属于黑盒测试的范畴,对非开发人员比较友
- 一、问题描述上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展
- 今天在线上发现一个问题,在使用Jackson进行时间的反序列化时,配置的 @JsonFormat 没有生效查看源码发现,Jackson在反序
- 传统的单例写法解决了什么问题首先,在大多数情况下(不包含面试),传统的单例写法已经完全够用了。通过 synchronized 关键字解决了多
- SpringFramework5.0是自2013年12月版本4发布之后SpringFramework的第一个主发行版。SpringFrame
- 前言哈哈哈哈哈。。。。。。。。问题终于解决了,让我得瑟一会(吗卖批,折腾了两天)~~~如果你的Android Studio出现以下错误,那么
- 一.枚举和静态常量区别讲到枚举我们首先思考,它和public static final String 修饰的常量有什么不同。我举枚举的两个优
- 一、实现流程1.注册2.登录3.登录保持【状态续签】二、实现方法项目结构1.引入依赖<!-- spring-web --><
- 在最近写的一个天气APP中用到了圆形头像这样的一个样式,中间是圆形的头像(被圆形切割的图片),周围是一个带颜色的圆环。如下图所示,今天就来说
- List和 java 中的 list 几乎一致;getOrElse 取出对应索引,如果该索引不存在或者为 null,就返回一个 lambda
- .NET将关于多线程的功能定义在System.Threading名字空间中。因此,要使用多线程,必须先声明引用此名字空间(using Sys
- 目录概述事件监听的结构Publisher,Event和Listener的关系事件发布者监听者总结概述ApplicationEvent以及Li
- 1. xml文件中加入自定义 搜索view<com.etoury.etoury.ui.view.IconCenterEditText
- 今天想说的就是能够在我们操作数据库的时候更简单的更高效的实现,现成的CRUD接口直接调用,方便快捷,不用再写复杂的sql,带吗简单易懂,话不
- 前言idea作为一个java开发的便利IDE工具,个人是比较喜欢的,今天来探索个小功能: 导出单个类文件为jar包!JAR文件的全称是Jav
- 前言${} 和 #{} 都是 MyBatis 中用来替换参数的,它们都可以将用户传递过来的参数,替换到 MyBatis 最终生成的
- maven的三种packaging方式pom是maven依赖文件jar是java普通项目打包war是java web项目打包pom:打出来可
- 背景笔者所在项目组在搭建一个全新项目的时候选用了SpringBoot3.x,项目中应用了很多SpringBoot2.x时代相关的第三方组件例