Spring MVC的核心在于其流程,这是SpringMVC的基础,SpringMVC是一种基于Serlvet的技术,它提供了核心控制器DispatcherServlet和相关组件。
下面是其组件和相关流程图
图中给出了Spring MVC的服务流程和各个组件运行的顺序,这是SpringMVC的核心。
首先呢,SpringMVC框架是围绕DispatcherServlet工作的,所以这个类是非常重要的类,我们知道他会拦截HTTP发送过来的请求,在Servlet初始化(调用init方法)时,SpringMVC会根据配置获取配置信息,从而获得统一资源标识符(URI)和处理器(Handler)之间的映射关系(HandlerMapping),为了更加灵活和增强功能,SpringMVC还可以给处理器加入拦截器,所以还可以在处理器执行前后加入自己的代码这样就就构成了一个处理器的执行链(HandlerExecutionChain),并根据上下文解析器等内容,当处理器返回的时候就可以通过视图解析器定位视图,将数据模型渲染到视图中,来响应用户的请求。
下面写一个完整的流程。
当一个请求到来时,DispatcherServlet首先通过请求和事先解析好的HandlerMapping配置找到对应的处理器(Handler),这样就准备开始运行处理器和拦截器组成的执行链,而运行处理器需要有一个对应的环境,然后就有了一个处理器的适配器(HandlerAdapter),通过这个适配器就能运行对应的处理器及其拦截器,这里的处理器包含控制器的内容和其他增强的功能,在处理器返回模型和视图给DispacherServlet后,DispatcherSerlvet就会把对应的视图传递给视图解析器(ViewResolver)。