Spring MVC的执行流程和常用组件,阿里、字节跳动、京东、腾讯、小米等名企高频面试

本文详细阐述了SpringMVC的执行流程,包括客户端请求如何通过DispatcherServlet、HandlerMapping、HandlerAdapter和Controller进行处理,以及各个组件的作用。同时介绍了SpringMVC中的不同映射方式,如XML配置、接口和注解映射。
摘要由CSDN通过智能技术生成

Spring MVC的完整执行流程如下:

  1. 客户端发送请求给DispatcherServlet前端控制器

  2. DispatcherServlet根据请求调用HandlerMapping处理器映射器

  3. HandlerMapping解析请求对应的Handler,返回一个执行链

  4. DispatcherServlet将执行链返回的Handler信息发给HandlerAdapter处理器适配器

  5. HandlerAdapter会调用对应的Handler处理器(即Controller)

  6. Handler执行完成后,会返回一个ModelAndView对象给HandlerAdapter

  7. HandlerAdapter将接收到的ModelAndView对象返回给DispatcherServlet

  8. DispatcherServlet根据ModelAndView对象选择合适的ViewResolver视图解析器

  9. ViewResolver根据逻辑View返回实际的view给DispatcherServlet

  10. DispatcherServlet对View进行渲染

  11. 将视图渲染结果返回给浏览器(客户端)

2.Spring MVC常用组件

===================================================================================

2.1 DispatcherServlet


前端控制器。⽤户请求到达前端控制器,它就相当于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>



2.2 HandlerMapping


HandlerMapping,处理器映射器。根据⽤户的请求地址来找到对应的Handler即控制器,spring mvc提供了不同的映射器实现不同的映射⽅式,分别有:

  • xml配置⽅式
  • 实现接⼝⽅式
  • 注解⽅式

2.3 HandlAdapter


HandlAdapter,处理器适配器。按照特定的规则去执行Handler,通过HandlerAdapter执行处理器。

2.4 Handler


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)]



  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值