SpringMVC中请求request执行过程

我们先在web.xml中配置好了 DispatcherServlet类

我们服务器端发送的请求 首先进入service方法 可是我们的DispatcherServlet类中没有service方法,所以自动执行其父类的父类的父类HttpServlet抽象类的该方法

在这里插入图片描述
HttpServlet类中的service方法最后将request和response传到了doGet方法,就近原则,传到了DispatcherServlet的父类FrameworkServlet中的doGet方法

在这里插入图片描述

直接将request和response传入processRequest方法
在这里插入图片描述
请求又进入了doService方法,这里的doService方法被DispatcherServlet类重写实现了,所以我们进入DispatcherServlet类中的doService方法
在这里插入图片描述
在doService方法中,我们的request被传入了许多的属性值,例如IoC容器,各种解析器等(两个细红圈所示),然后将request传入doDispatch方法
在这里插入图片描述
我们来到了doDispatch方法,首先定义一个请求处理器执行链mapperHandler,然后定义一个ModelAndView对象mv,mapperHandler执行getHandler方法,为当前的请求分配handler请求处理器(即Controller层下全部的方法),然后后面返回视图mv

然后定义一个适配器ha,Handler格式是不固定的,所以在处理请求时需要HandlerAdapter做适配

ha调用handle方法,返回ModelAndView对象mv,这里真正的调用了Controller层中的handler方法

最后执行processDispatcherResult方法

在这里插入图片描述
processDispatcherResult方法中,将mv对象、请求与响应传入render方法

在这里插入图片描述
在DispatcherServlet的render方法中,获得了目标视图,并进入视图对象的render方法
在这里插入图片描述
这个renderMergedOutputModel方法指把页面和目标方法的返回结果结合起来,在本类中是个抽象方法,InternalResourceView实现了该方法,我们点进去
在这里插入图片描述
最后通过请求转发的方式访问目标页面
在这里插入图片描述

使用redirect重定向的方式,是无法访问我们WEB-INF中的jsp页面,只能通过forward(请求转发)的方式

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值