最近接手一个项目,用的是 SpringMVC
框架。循例想剖析一下它的源码,以求更深刻地理解 MVC
的实现。 DispatcherServlet
是 SpringMVC
最核心的类,就拿它开刀:)
在 web.xml
中定义DispatcherServlet和它的Mapping:
DispatcherServlet继承于FrameworkServlet,而FrameworkServlet又继承于HttpServletBean, HttpServletBean再继承于HttpServlet:
DispatcherServlet有一段静态代码块值得关注:
你可以理解为SpringMVC为你预先定义好一些后面有可能会用到的类。
Servlet容器(如Jetty)会调用Servlet的init方法,在这里,HttpServletBean重写了init()方法如下:
它是去Context里面找在dispatcher-servlet.xml里面定义好的HandlerMapping的实现类,比如我们这里定义的是:
这些Handler, HandlerAdapter, HandlerMapping,ViewResolver都会在DispatcherServlet后续的执行中派上用场。
至此,DispatcherServlet的初始化算是完成了。下一篇我将会分析它是如何处理请求的。