springMVC(一): 整体请求过程概述
2024-10-18 22:33:13
- 首先用户发送请求,
DispatcherServlet
实现了Servlet
接口 - 获取url请求对应的处理方法,遍历handlerMappings列表,获取对象
HandlerExecutionChain
(包含一个处理器 handler 如HandlerMethod 对象、多个 HandlerInterceptor 拦截器对象),遍历handlerMappings列表,针对每个handlerMapping试图获取HandlerExecutionChain,一旦成功,即返回 - 获取对应的 HandlerAdapter,HandlerAdapter 将会把步骤2中的handler包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器。DispatcherServlet中的HandlerAdapter列表如图中所列的3种,依次遍历,调用
HanderAdapter.supports
判断是否支持。 - 调用Controller的具体方法处理请求,并返回一个 ModelAndView。HandlerAdapter会为每一个请求生成一个
ServletInvocableHandlerMethod
实例,核心方法invokeAndHandle
,包括输入参数的处理和返回数据的解析。 - 渲染
- 返回
前端控制器(DispatcherServlet):接收用户请求并返回请求结果。它的作用相当于一个转发器或中央处理器,控制整个执行流程,对各逐渐进行调度降低组件之间的耦合。
处理器映射器(HandlerMapping):根据用户请求的URL,通过注解或者XML配置,查找相应的处理器Handler
处理器适配(HandlerAdapter):根据映射器查找出的Handler,完成调用处理器中的方法
处理器(Handler):请求处理的具体逻辑,返回数据和视图信息
视图解析器(View Resolver):解析具体视图,通过ModelAndView对象中的View信息,将逻辑视图名解析成真正的视图View
出处:
【深入浅出spring】Spring MVC 流程解析 -- HanndlerMapping
【深入浅出spring】Spring MVC 流程解析 -- HandlerAdapter
【深入浅出spring】Spring MVC 流程解析 -- InvocableHandlerMethod
最新文章
- tomcat之一:指定tomcat运行时JDK版本
- Discuz的安装 (原创帖,转载请注明出处)
- 1.3 Content Provider
- iOS 自定义Actionsheet
- IOS动态判断UITextField是否输入为手机号
- 3DES封装类
- html5优势
- linux学习笔记2-命令总结1
- Android———从GitHub上下载源码的方法【Written By KillerLegend】
- Netsharp快速入门(之15) 销售管理(报表B 销售季度表)
- HDU-2686 Matrix 多进程DP
- 微信小程序的一些限制
- dump 验证实例恢复的起点和终点
- 浅谈Web Api配合SignalR的跨域支持
- SubLime BracketHighlighter 配置
- CentOS 虚拟机安装详解
- Linux动态频率调节系统CPUFreq之二:核心(core)架构与API
- Tornado-基于正则的路由和动态分页
- ORACLE数据库_迁移(新机器,新存储)
- adb command
热门文章
- (原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况
- js实现滑动的弹性导航
- json 字符串包含数组转换为object对象是报异常java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to
- [PGM] Temporal Models
- 8 -- 深入使用Spring -- 6... Spring的事务
- Fiddler 简介
- Android 安全机制
- B - 考试排名
- .NET Core开发日志——Startup
- CH 1201 - 最大子序和 - [单调队列]