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