SpringMvc执行流程源码解析

一、简介

Spring web Mvc是基于ServletApi构建的原始Web模块,从一开始就包含在Spring框架中;

从Servlet到SpringMvc

最典型的MVc就是JSP+Servlet+javaBean的模式;

弊端:

1、xml下配置Servlet的映射非常麻烦,效率低;

2、必须要继承父类,重写方法侵入性强;

3、如果想在一个Servlet中处理同一个业务模块的功能分发给不同的方法进行处理非常麻烦;

4、参数解析麻烦;单个参数->pojo对象,Json文本->pojo对象;

5、数据响应麻烦;pojo->json

6、跳转页面麻烦,对path控制;

所以SpringMVC就是在Servlet的基础上进行了封装;

二、Mvcweb开发的实现方式

1、 给Servlet容器配置一个DispatcherServlet(web.xml )

2、 添加SpringMVC的配置信息

继承类/实现接口方式:

复制代码
implements HttpRequestHandler
implements Controller

不同的HandlerMapping:

复制代码
<!‐‐通过设置属性的方式去设置映射路径‐‐>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="httpRequest">simpleController</prop>
</props>
</property>

<!‐‐BeanNameUrlHandlerMapping 一定要为Controller设置一个有效映射地址的名字 如 @Con
troller("/xxxx")‐‐>
<bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

注解方式:配置控制器@Controller和处理方法的映射---@RequstMapping 即可

原理:说白了就是用一个DispatcherServlet 封装了一个Servlet的调度中心, 由调度中心帮我们调用我们的处理方法:在这个过程中调度中心委托给各个组件执行具体工作 ,比如帮我们映射方法请求、帮我解析参数、调用处理方法、响应数据和页面 等

三、SpringMvc的具体执行流程

中央Servlet DispatcherServlet为请求处理流程提供统一调度,实际工作交给可配置组件执行;

DispatcherServlet:前端调度器,负责将请求拦截下来分发给各控制方法中;

HandlerMapping: 处理器映射器,负责根据请求的URL和配置@RequestMapping映射去匹配, 匹配到会返回Handler;

HandlerAdaper: 处理器适配器,负责调用Handler-具体的方法- 返回视图的名字 Handler将它封装到ModelAndView;

ViewReslover:视图解析器, 根据ModelAndView里面的视图名地址去找到具体的jsp封装在View对象中;

View:进行视图渲染(将jsp转换成html内容 --这是Servlet容器的事情了) 最终response到的客户端;

四、详细源码请求流程

相关推荐
口_天_光健9 小时前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
梦里不知身是客1120 小时前
spark读取table中的数据【hive】
大数据·hive·spark
DashVector21 小时前
向量检索服务 DashVector产品计费
数据库·数据仓库·人工智能·算法·向量检索
yumgpkpm1 天前
Doris在CMP7(类Cloudera CDP 7 404版华为Kunpeng)启用 Kerberos部署Doris
大数据·hive·hadoop·python·oracle·flink·cloudera
Mr_Art891 天前
金融行业湖仓实践:Apache Paimon 小文件治理之道
数据仓库·金融·apache
数据牧羊人的成长笔记1 天前
Hadoop 分布式计算MapReduce和资源管理Yarn
hadoop·eclipse·mapreduce
帅次1 天前
系统分析师-案例分析-数据库系统&数据仓库&反规范化技术&NoSQL&内存数据库
大数据·数据库·数据仓库·oracle·kafka·数据库开发·数据库架构
新疆嘉博智选科技有限公司1 天前
Macos系统上搭建Hadoop详细过程
大数据·hadoop·分布式
计算机编程-吉哥2 天前
大数据毕业设计项目推荐 基于大数据的广西药店数据可视化分析系统 1.65w条数据【大数据毕业设计项目选题】
大数据·hadoop·毕业设计·计算机毕设·大数据毕业设计选题推荐
小湘西2 天前
在 Hive 中NULL的理解
数据仓库·hive·hadoop