(一)Spring MVC简介

一、概述

Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分。Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,

即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring MVC大大简化了我们日常Web开发。

二、Struts2和SpringMVC对比

1、springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。 

2、springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。 

3、Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过request域传输到页面。Jsp视图解析器默认使用jstl。

三、优点  

√让我们能非常简单的设计出干净的Web层和薄薄的Web层; 

√进行更简洁的Web层的开发; 

√天生与Spring框架集成(如IoC容器、AOP等); 

√提供强大的约定大于配置的契约式编程支持; 

√能简单的进行Web层的单元测试; 

√支持灵活的URL到页面控制器的映射; 

√非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); 

√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; 

√提供一套强大的JSP标签库,简化JSP开发; 

√支持灵活的本地化、主题等解析; 

√更加简单的异常处理; 

√对静态资源的支持; 

√支持Restful风格。

四、Spring MVC架构

这里写图片描述

1、  用户发送请求至前端控制器DispatcherServlet,前端控制器收到请求后自己不进行处理,而是调用处理器映射器。

2、  DispatcherServlet收到请求后调用HandlerMapping处理器映射器。HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象、多个HandlerInterceptor拦截器)对象。 

3、  处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 

4、  DispatcherServlet通过HandlerAdapter处理器适配器调用处理器 

5、  执行处理器(Controller,也叫后端控制器)。返回执行结果,封装在ModelAndView中 

6、  DispatcherServlet将ModelAndView传给ViewReslover视图解析器, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;   

7、  ViewReslover解析后返回具体View 

8、  DispatcherServlet对View进行渲染视图(即将对象模型的数据填充至视图中)。此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术; 

9、  DispatcherServlet将结果响应给用户 

  

猜你喜欢

转载自www.cnblogs.com/yuexiaoyun/p/9460600.html