springmvc中一次请求的主要流程图及讲解

1.浏览器发出一次Http请求调用(HttpServlet)doPost方法由于FrameworkServlet集成HttpHServletBean而HttpServletBean集成HttpServlet所以会调用FrameworkServlet中的doPost方法

2.FrameworkServlet中的doPost方法会调用processRequest方法这个方法会将request对象保存起来,还有和本地化相关的东西保存起来

3.接着会调用doService由于FrameworkServlet中的doService只是一个模板方法。它的实现方法在DispatchServlet中

4.这样就进入到DisaptchServlet中的doService。这个方法主要是保存重定向的FlashMap对象接着它会调用doDispatch方法

5.我们就到了DispatchServlet中最为重要的方法doDispatch方法中。在这方法中做如下事

 检测该请求是否为文件上传请求

根据request请求获取Handler

根据Handler对象获取HandlerAdapter

调用拦截器中的preHandler方法

调用HandlerAdapter中的handle方法利用反射调用Handler方法

最后渲染视图


HandlerAdapter中的handler方法调用分析:

DisaptchServlet中的doDispatch方法中有句ha.handle这里会调用HandlerAdapter的handle方法由于RequestMappingHandlerAdapter实现了HandlerAdapter方法

接着handle会调用handleInternal方法。它里面进行了很多次包装,最终进入到ServletInvocalHandlerMethod。

在ServletInvocalHandlerMethod中的invokeAndHandle这里就会利用反射来真正的调用


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值