Spring MVC的完整执行流程如下:
-
客户端发送请求给DispatcherServlet前端控制器
-
DispatcherServlet根据请求调用HandlerMapping处理器映射器
-
HandlerMapping解析请求对应的Handler,返回一个执行链
-
DispatcherServlet将执行链返回的Handler信息发给HandlerAdapter处理器适配器
-
HandlerAdapter会调用对应的Handler处理器(即Controller)
-
Handler执行完成后,会返回一个ModelAndView对象给HandlerAdapter
-
HandlerAdapter将接收到的ModelAndView对象返回给DispatcherServlet
-
DispatcherServlet根据ModelAndView对象选择合适的ViewResolver视图解析器
-
ViewResolver根据逻辑View返回实际的view给DispatcherServlet
-
DispatcherServlet对View进行渲染
-
将视图渲染结果返回给浏览器(客户端)
===================================================================================
前端控制器。⽤户请求到达前端控制器,它就相当于MVC模式中的C,DispatcherServlet是整个流程控制的中⼼,由它调⽤其它组件处理⽤户的请求,DispatcherServlet的存在降低了组件之间的耦合性,系统扩展性提⾼。
<!-- SpringMVC的前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化时加载配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--表示容器在启动时立即加载Servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
HandlerMapping,处理器映射器。根据⽤户的请求地址来找到对应的Handler即控制器,spring mvc提供了不同的映射器实现不同的映射⽅式,分别有:
- xml配置⽅式
- 实现接⼝⽅式
- 注解⽅式
HandlAdapter,处理器适配器。按照特定的规则去执行Handler,通过HandlerAdapter执行处理器。
Handler,处理器。Handler 是DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的⽤户请求进⾏处理。由于Handler涉及到具体的⽤户业务请求,所以⼀般情况需要程序员根据业务需求开发Handler。也就是我们常说的控制器类和方法。
//标识此类为控制器类
@Controller
public class JspController {
@RequestMapping("/index")
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/8a0d0f8f8981eee9761ecbf8f63b969e.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/82f2352501c554ce18d5d95065c78a19.png)
![img](https://img-blog.csdnimg.cn/img_convert/89a7b151fc55613193dffeef2b23bf54.png)
![img](https://img-blog.csdnimg.cn/img_convert/9e43d6367d234934991f15d47a1d91bb.png)
![img](https://img-blog.csdnimg.cn/img_convert/9dbdcb89b9721dfc6deeb043acb7f3ac.png)
![img](https://img-blog.csdnimg.cn/img_convert/d2002a1823b9f373b01cc1a3a2f63940.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!**
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)**
![img](https://img-blog.csdnimg.cn/img_convert/cf3c8ffcfc66ed2d93534367b733da99.jpeg)
### 最后
这份《“java高分面试指南”-25分类227页1000+题50w+字解析》同样可分享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
![image](https://img-blog.csdnimg.cn/img_convert/f5615ac340c075a9038b9195a886e6a2.webp?x-oss-process=image/format,png)
![image](https://img-blog.csdnimg.cn/img_convert/c7f677993d84c38e02f01a855b60c103.webp?x-oss-process=image/format,png)
享给有需要的朋友,感兴趣的伙伴们可挑战一下自我,在不看答案解析的情况,测试测试自己的解题水平,这样也能达到事半功倍的效果!(好东西要大家一起看才香)
[外链图片转存中...(img-eNf1HRY7-1711991057922)]
[外链图片转存中...(img-fVeMhZ3C-1711991057922)]