SpringMVC框架的执行流程
Spring MVC框架源码实战(一)
 
一. DispatcherServlet
Spring MVC框架源码实战(一)
DispatcherServlet利用url-pattern为 "/"的方式介入到servlet请求中, 为所有servlet请求的必经之路.
接收请求, 分发请求 (查找处理器, 执行处理器), 相应请求.
 
使用设计模式: 抽象模版设计模式
继承AbstractHttpServlet类, 因为该类只需要具体负责实现doDispatch(request,response)函数, 而doGet, doPost函数是固定的.
所以继承后, 只负责实现doDispatch函数即可.
Spring MVC框架源码实战(一)
 
二. doDispatch(request, response)函数
为DispatcherServlet主要实现, 执行的函数.
包括: 1. 查找处理器 2. 执行处理器的处理方法
 
查找处理器-getHandler(request)
使用设计模式: 策略模式
 
策略模式
解决的问题: 消灭很多的IF语句
类似于 "锦囊妙计", 锦囊(List)里有很多妙计(策略), 每次挑一个, 如果有合适的就使用(轮询).
原来的查找方式: 使用大量的if-elseif-else语句, 难以维护.
Spring MVC框架源码实战(一)
使用策略模式之后 (利用getHandler获取handler):
 
Spring MVC框架源码实战(一)
我们使用一个List来维护各种方式的映射器 (简单映射, bean映射等)
之后直接调用具体映射器的查找方法, 如果没有找到, 继续找下一个映射器.
 
 
三. 处理器映射器-HandlerMapping
Spring MVC框架源码实战(一)
处理器映射器负责具体映射器内部的映射(使用自己独立的实现方式).
比如SimpleHandlerMapping就使用HashMap来进行维护, 如果能使用这个妙计(策略), 也就是说能在处理器映射中
找到对应的处理器, 那么就返回相应的处理器, doDispatch函数也就可以进行下一步-处理器调用.
 
其中, 比较繁琐的put方式, 可以改成由配置文件导入, 如properties键值对.

相关文章:

  • 2021-08-30
  • 2021-06-06
  • 2021-11-28
  • 2021-07-23
  • 2022-01-28
  • 2021-07-07
猜你喜欢
  • 2022-12-23
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-10
  • 2021-11-06
  • 2022-12-23
相关资源
相似解决方案