学习(顺便手撕)SpringMVC

SpringMVC

SpringMVC这么火,要不我们手撕一下吧~
_(¦3」∠)_

手撕是深层理解框架的必经之路。最近就手撕了一个比较具体而微型的SpringMVC核心功能(只是实现了接受请求时调用的逻辑)。发出来给大家分享分享~

了解SpringMVC

SpringMVC接受用户请求时的调用逻辑顺序如下:

学习(顺便手撕)SpringMVC_第1张图片
步骤解读:

  1. 用户发送请求到前端控制器DispatcherServlet
  2. DispatcherServlet收到请求时调用HandlerMapping 处理器映射器
  3. HandlerMapping 找到具体的处理器,生成处理器对象和处理器拦截器(如果存在拦截器的话)一并返回给DispatcherServlet
  4. DispatcherServlet 调用具体的HandlerAdapter处理器适配器
  5. HandlerAdapter 经过适配调用具体的处理器 (Controller,也叫后端控制器)
  6. Controller 执行完成返回 ModelAndView
  7. HandlerAdapter 将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器
  9. ViewReslover 返回 View
  10. DispatcherServlet 根据View进行渲染视图(即将模型数据填充至视图中)
  11. DispatcherServlet 响应用户

手撕简单的SpringMVC

我已将SpringMVC的代码放到GitHub,源码中有比较详细的注解,另外为了方便大家理解,其中不乏一些重复的代码没有提取出来(特别是在DispatcherServlet),大家自己可以试着优化优化。
开发环境:Idea 2018.3

我的SpringMVC:LPB-Devin/MySpringMVC

老铁满意的话,可以帮Star下哇~

你可能感兴趣的:(Java框架)