SpringMVC的执行流程

过去的开发中,视图阶段(老旧JSP等)

1.首先用户发送请求到前端控制器DispatcherServlet(这是一个调度中心)

2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping

3.处理器映射器HandlerMapping找到具体的处理器,可查找xml配置或注解配置,生成处理器对象及处理器拦截器(如果有),再将处理器执行链返回给DispatcherServlet.

4.前端控制器DispatcherServlet调用处理器适配器HandlerAdapter.

5.处理器适配器HandlerAdapter经过适配调用具体的处理器Handler/Controller.

6.处理器Handler/Controller执行完成返回ModelAndView对象给处理器适配器HandlerAdapter.

7.处理器适配器HandlerAdapter将处理器Handler/Controller的执行结果ModelAndView返回给前端控制器DispatcherServlet.

8.前端控制器DispatcherServlet将ModelAndView传给视图解析器ViewReslover.

9.视图解析器ViewReslover解析后返回具体View视图.

10.前端控制器DispatcherServlet根据View进行渲染视图,即将模型数据填充至视图中

理解记忆思路:主要要弄清前端控制器带来的三个组件处理器映射器、处理器适配器与视图解析器分别是干什么用的,处理器映射器是个map集合可通过key值参数访问路径去寻找value参数访问对应的方法是哪个方法,由于可能会有拦截器存在所以要将方法与拦截器一起封装打包成处理器执行链返回。前端控制器为调度中心三个组件都是由调度中心来调度的彼此之间无直接联系。接收参数时参数的形式类型并不是统一的,为方便接收需要参数类型转换器,返回参数也一样形式多种类型多样需要转换处理,这就是处理器适配器的作用。视图解析器的作用就是将逻辑视图解析为真正的视图。

当然现在的开发,基本都是前后端分离的开发,并没有视图这些,一般都是handler中使用Response直接结果返回.

1.首先用户发送请求到前端控制器DispatcherServlet(这是一个调度中心)

2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping

3.处理器映射器HandlerMapping找到具体的处理器,可查找xml配置或注解配置,生成处理器对象及处理器拦截器(如果有),再将处理器执行链返回给DispatcherServlet.

4.前端控制器DispatcherServlet调用处理器适配器HandlerAdapter.

5.处理器适配器HandlerAdapter经过适配调用具体的处理器Handler/Controller.

6.方法上添加了@ResponseBody

7.通过HttpMessageConverter来返回结果转换为JSON并响应.

相关推荐
Bingo_BIG1 天前
Java Spring框架:单表的查询、新增、修改、删除、导入、导出
java·spring·前后端
paopaokaka_luck1 天前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
牧瀬クリスだ1 天前
YAML配置详解:SpringBoot实战指南
java·spring·yml
需要8261 天前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
paopaokaka_luck1 天前
考研政治刷题小程序(AI推荐题目、ECharts数据分析、章节练习与专项训练、模拟考试、错题本与收藏夹、学习打卡与目标管理、题库和组卷维护)
前端·javascript·spring boot·spring·数据分析·echarts
步行cgn1 天前
Spring 基于 XML 的自动装配:byType 详解
java·后端·spring
边境悍匪1 天前
蜗牛学苑 Java 智能体学习 Day46|贯穿项目 2 思维导图复盘
java·开发语言·vue.js·学习·spring
步行cgn2 天前
Spring c 命名空间注入详解
java·后端·spring
需要8262 天前
MySQL 索引 B+ 树与“查询为什么变慢了
java·spring boot·spring·spring cloud·tomcat
vx-程序开发2 天前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django