JavaEE体系结构从上到下的Web层、业务层(Service层)、持久层(Dao层)和SSM相互对应。SpringMVC是Web层的框架,Spring是业务层的框架,Mybatis是持久层的框架。

为什么要使用SpringMVC?

很多程序的问题在于处理业务数据的对象和显示业务数据的视图之间存在紧密的耦合。通常,更新业务对象的命令都是从视图本身发起的,这样让视图对于任何业务对象都有高敏感和高耦合。而且,当多个视图依赖同一个业务对象时是没有灵活性的。

而SpringMVC是一种基于Java,实现了Web MVC设计模式的,请求驱动的轻量级框架,即是使用了MVC架构模式的思想将Web层进行解耦。基于请求驱动指的是使用请求--响应模型,框架的目的是为了帮助我们简化开发,SpringMVC当然也帮我们简化了Web的开发。

MVC设计模式

MVC设计模式的任务是将包含业务数据的模块和显示视图的模块解耦。这是怎么发生的呢?在视图层和模型层之间引入了重定向层,即控制器来进行重定向。

 

SpringMVC 架构

SpringMVC是Spring的一部分。不是独立出来。

springmvc 匹配 后缀_Web

 SpringMVC架构的核心

springmvc 匹配 后缀_数据_02

整个架构的具体流程:

(1)用户发送请求 ——> DispatcherServlet ,前端控制器拿到请求后并不自己处理,而是交给其他处理器进行处理,这里只是作为一个统一访问点,进行全局流程的控制。

(2)DispatcherServlet ——> HandlerMapping,处理器映射器会将请求映射为HandlerExecutionChain对象返回给DispatcherServlet,该对象里面包含了一个Handler处理器对象和多个HandlerInterceptor拦截器对象(如果设置了拦截器则生成拦截器对象,没有则不生成)。

(3)DispatcherServlet ——> HandlerAdapter,处理器适配器将传递过来的处理器包装成适配器,从而很容易支持了多种类型的处理器,这也是适配器设计模式的应用。

(4)HandlerAdapter ——> 调用执行处理器相应功能,处理方法(就是需要我们自己写的Controller类和方法),并且返回一个ModelAndView对象(包含了模型数据、逻辑视图名),再由HandlerAdapter返回给前端控制器。

        ModelAndView :Model部分是业务对象返回的模型数据,View部分是逻辑视图名。

(5)DispatcherServlet ——> ViewResolver,视图解析器将逻辑视图名解析为具体的View(不包含模型数据)。首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象。

(6)DispatcherServlet ——> View,此时View进行视图渲染,即将模型数据进行渲染。此时的Model实际上是一个Map数据结构。

(7)DispatcherServlet ——> 响应用户。

 

说明:

1.在springmvc的组件中处理器映射器,处理器适配器,视图解析器称为springmvc的三大组件

2.需要用户自己开发的组件有handler,view

3.三大组件是需要配置的,点击这里