一、Web的MVC框架
先来简单了解一下Web的MVC框架:
MVC,大概分为三个部分,controller,view,model。从图中可以看出,controller协调model和view。model和view不直接作用彼此。controller是我们一开始访问页面的接口,也就是说我们的我们页面的地址和业务数据都需要从controller中获得。这样就能推想,我们的springMVC实现原理,一开始也是先要找到 controller这个类,然后从controller类中获得view的地址和业务数据,然后再根据一些api,生成view和model完整组合的页面。返回给客户端。
注意:SpringMVC是基于请求驱动(指的就是使用请求-响应模型)的Web框架,也就是它是单向性的,客户端输入网址访问时才会对页面造成影响,反之不能。
二、SpringMVC实现原理
那么SpringMVC是怎么工作的呢?我们先来了解一下服务到工作者模式,即前端控制器+应用控制器+页面控制器+上下文,这个也是Web MVC 模型,只是将职责更加明确了。
Spring Web MVC 也是服务到工作者模式的实现,但进行可优化。
Spring MVC处理请求的流程图:
1.认识几个类:
前端控制器是 DispatcherServlet;应用控制器其 实拆为处理器映射器(HandlerMapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/ 处理器为 Controller 接口(仅包含 ModelAndViewhandleRequest(request, response) 方法)的实现(也可以 是任何的 POJO 类)。
2.Spring MVC 原理图
说明:
值得一说的是,HandlerMapping运用策略模式,使之很容易添加新的映射策略;HandleAdpter将处理器包装为适配器,从而支持多种类型的处理器从而支持多种类型的页面控制器,是适配器设计模式的应用。View Resolver并不知道具体的模板页面是什么,应用策略模式,可以很容易的去切换其他视图技术。这些都可以看到SpringMVC 的强大之处,职责分明,灵活性高。
三、小结
Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动(基于请求驱动指的就是使用请求-响应模型)类型的轻量级 Web 框架。学习一样东西,必须要知道它最基本的实现原理,要不然,在项目过程中,一旦出错,就手足无措了。与大家共勉。