先看这张图看不懂没有关系。
我们使用一个小demo来了解一下执行流程。
(1)DispatcherServlet
表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
如上url拆分成三部分:
SpringMVC部署在服务器上的web站点
hello表示控制器
我们都知道什么servlet都应该去web.xml进行注册。
在这里,我们不需要手动去写servlet的实体类,使用spring的提供的。
在下面有两个东西:
init-param是参数:我们看到了context就可以联想到spring的上下文吧(applicationContext)
所以这个是引用spring的配置文件的参数。 name是参数名 value是我们项目中的spring配置文件的所在地。
load-on-starup是启动级别,表示servlet的加载顺序。
(2)HandleMapping处理器映射器
DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
前面那个http://localhost:8080/SpringMVC/hello的例子
寻找/hello的handler。然后返回执行链到dipatcherServlet。
(3)HandlerAdapter处理器适配器
HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
(handler不一定是controller。controller一定是handler)
HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
(4)视图解析器(ViewResolver)
解析HandlerAdapter传递的逻辑视图名。
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。