您的位置:首页 > 编程语言 > Java开发

springMVC阅读源码素材

2022-03-09 08:57 776 查看

1、开始debug的时候,对HttpMethod感到好奇,点进去查看一下HttpMethod究竟是何物?

  • HttpMethod 是请求方法的枚举类,结合咱浏览器地址栏的参数是直接输入,可以知道咱的HttpMethod的值是Get

  • 果然咱的HttpMethod的值是Get,所以下一步会执行super.service(request, response);

  • ctr进入该方法看一下,究竟是何物,发现按ctr没有反应,那咱就按调试的F5进入吧【解决:重新打开一边该类的文件】

  • 进入super.service(request, response);内部一探究竟:

  • 发现这个service方法做的是请求分发操作,结合咱的请求方法是GET,所以下一步咱是到doGet去一探究竟~

  • 再进入processRequest方法~

  • 进入发现重点是doService(request, response);那咱就进入该方法内部一探究竟吧~

  • 进入发现重点是doDispatch(request, response);那咱就进入该方法内部一探究竟吧~

2、真正的springMVC执行流程的源码分析,才真正开始~

  • 因为处理器映射器返回处理器执行链对象是在咱的执行流程-“主干路线上”,咱应该进入这个返回获取到处理器执行链对象getHandler(processedRequest);方法里。

  • 进入获取处理器执行链方法内部,发现了处理器映射器,通过观察调试变量Variables的值,发现处理器映射器 handlerMappings 的值正是咱配置的BeanNameUrlHandlerMapping。

  • 还发现是调用适配器的getHandler方法 返回HandlerExecutionChain 处理器执行链对象----是springMVC 执行流程的-"主干路线",进入该getHandler方法进行观察一下

  • 进入AbstractUrlHandlerMapping的getHandlerInternal(HttpServletRequest request)发现:----lookupHandler是springMVC 执行流程的-"主干路线"的查找匹配的处理器。进入该lookupHandler方法进行观察一下~
  • 进入该lookupHandler方法发现:是通过路径去选择匹配的处理器----SpringMVC的执行流程的"主干路线",到这里就很清晰的得到SpringMVC执行流程的如下过程:

✿ 到此得到SpringMVC执行流程的如下过程:客户端发送请求,请求被前端控制器接收后,前端控制器---通过处理器映射器去寻找处理器【根据路径进行配置 】-----然后返回一个处理器执行链对象.

  • HandlerExecutionChain handler =
    mapping.getHandler(request)
    ;
  • Object handler =
    this.handlerMap.get(urlPath);
  • Object handler =
    lookupHandler(lookupPath, request)
    ;
  • HandlerExecutionChain

★ 在执行过程中,通过调试变量Variables的值,发现处理器映射器 handlerMappings 的值正是咱配置的BeanNameUrlHandlerMapping.

★ 在执行过程中,通过选中等编译器显示的方式,咱发现urlPath路径正是咱配置的/hello.

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: