spring MVC执行过程

发起请求后首先达到DispatcherServlet的doService()方法,然后到doDispatcher()方法,以下是doDispatcher()的主要执行步骤:

          获取handlerMapping用于映射请求到controller;

          通过handlerMapping获得handlerAdapter;

          使用handlerAdapter执行要调用的controller;

          根据controller返回的结果进行渲染(设置传给前端的参数、添加页面添加前缀/后缀、避免死循环等);          

1、获取处理请求映射的handlerMapping,我们通常用的注解如:@RequestMapping等对应的handlerAdapter就是RequestMappingHandlerAdapter,其他几个HandlerAdapter只有特别说明才会用到

2、handlerMapping中的mapping.getHandler 将请求解析,得到controller类对应的类和方法

 3、通过handlerMapping得到handlerAdapter,因为controller有不同的返回值,如modelAndView、responseBody、视图等,不同的handlerAdapter用来解析不同的返回值

4、DispatcherServlet中的源码 ha.handle(processedRequest, response, mappedHandler.getHandler()); 用来执行controller的方法并返回; 

5、通过java反射执行controller的方法  

执行方法前通过反射将参数赋值给接收参数的po(代码比较深)

6、返回视图后需要对视图进行渲染(方法 processDispatchResult),如添加前缀、后缀、避免死循环等 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值