浅析Spring Mvc流程

本文深入剖析SpringMVC的工作原理,重点介绍DispatcherServlet的作用,从项目启动到请求处理的全过程,包括配置bean的方式、Handler的获取及适配,直至ModelAndView的返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天来带大家跟一下Springmvc源码:

在此之前先来回顾一下Springmvc 的三种实现方式:

  • 实现HttpRequestHandler接口
  • 实现Controller接口
  • annotation(通过@Controller/@RestController注解)

这三种的上两种都需要配置在配置文件里配置bean。

(有的人想问了,上面这些跟流程有什么关系,一会你就发现上面这些很重要)

  • 首先 我们都知道一个SpringMvc有一个最重要的类DispatcherServlet(前端控制器);
  • 先项目启动后,会先调用FrameworkServlet的service() ——> processRequest()——>doService();
  • 当调用doService方法时,发现这个方法是一个抽象方法,谁实现了它呢?当然就是DispatcherServlet ,此时我们顺利的走到了前端控制器。
  • doService又调用了doDispatch()  ; 这个方法里就发生了最重要的流程。
  • mappedHandler = getHandler(processedRequest); getHandler里面循环判断这个控制器怎么配置的(是通过xml配置还是annotation),然后返回的就是HandlerExecutionChain的对象。(一个mappedHandler和一个过滤器)
  • HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler()); 这个方法里就是看控制器怎么实现的(上边三种方式)。
  • mv = ha.handle(processedRequest, response, mappedHandler.getHandler());这个方法里,看ha的实现方式,如果是实现Controller,那么返回值强转成Controller;如果是实现HttpRequestHandler那么强转成HttpRequestHandler;如果是annotation,那么通过获取类信息,注解等,返回对应的modelAndView。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值