设计模型
Spring MVC 请求处理流程
Spring MVC 架构图
代码简要
- Servlet:
所有的Servlet都是实现了Servlet接口,该接口提供了servlet生命周期的一些方法,如: init(), destroy(),service()<每次接收到请求都由该方法来处理>等,没有具体实现。
|
|
- GenericServlet:
该类实现了Servlet的init()方法以及提供了获取初始化参数的方法。init方法的实现最后需要由子类实现
获取初始化参数:
|
|
init()初始化:
|
|
|
|
- HttpServlet
实现了servlet的service()方法,所有的请求都由该方法来处理,判断走doGet()还是doPost()等等。
该方法是有Tomcat容器来调用的(init()方法也是)。
|
|
|
|
以上几个类都是不需要Spring框架的参与。
- HttpServletBean
该类最终重载实现了GenericServlet类的init()方法。注意: 方法是final类型,不可以被继承。
|
|
上面的类需要调用initServletBean()方法,该方法在HttpServletBean类中没有具体实现,如下:
|
|
- FrameworkServlet
实现了HttpServletBean类的initServletBean()方法,初始化WebApplicationContext。并且重载了HttpServlet类的service()方法,以及所有的doGet(),doPost()方法, 这些方法最后都调用了doService()方法(该类没有实现doService(),由DispatchServlet类具体实现)。
|
|
|
|
上面的方法初始化一个WebApplicationContext.
|
|
- DispatcherServlet
实现FrameworkServlet类的onRefresh()方法,在该方法中具体初始化Spring MVC需要的一些策略对象。如HandlerMappings,HandlerAdapters等。
|
|
至此,DispatchServlet对象的初始化完成。