Spring MVC

1.什么是springMVC

springMVC基于java实现的MVC的设计模式,通过把model,view,controller分离,将web层进行解耦,将复杂的逻辑清晰化,简化代码开发,方便开发人员之间的配合.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjgXi86v-1573720869970)(image/springmvc流程.jpg)]

用户向服务器发开请求,请求被SpringMVC 前端控制器 DispatcherServlet 捕获;

DispatcherServlet收到请求调用HandlerMapping处理器映射器()。

DispatcherServlet 对请求 URL 进行解析,得到请求资源标识符(URI)。然后根据该 URI,调用
HandlerMapping 获得该 Handler 配置的所有相关的对象(包括 Handler 对象以及 Handler 对象对应
的拦截 器),最后以 HandlerExecutionChain 对象的形式返回;

DispatcherServlet 根据获得的 Handler,选择一个合弁的 HandlerAdapter;(附注:如果成功获得
HandlerAdapter 后,此时将开始执行拦截器的 preHandler(true或者false) 方法)

提取 Request 中的模型数据,填充 Handler 入参,开始执行 Handler(Controller)。 在填充 Handler
的 入参过程中,根据你的配置,SpringMVC 将帮你做一些额外的工作:

1 HttpMessageConveter: 将请 求消息(如 Json、xml 等数据)转换成一个对象,将对象转换为指定的响应信息。

2 数据转换:对请求消息进行数据转换。如 String 转换成 Integer、Double 等。

3 数据根式化:对请求消息进行数据格式 化。 如将字符串转换成格式化数字或格式化日期等。

4数据验证: 验证数据的有效性(长度、格式 等),验证结果存储到 BindingResult 或 Error 中。

Handler 执行完成后,向HandlerAdapte返回一个 ModelAndView 对象;

HandlerAdapter将根据返回的 ModelAndView(必须是已经注册到 SpringMVC 容器中的ViewResolver)返回给 DispatcherServlet;

DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

ViewReslover解析后返回具体View。

DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。DispatcherServlet响应用户。

2.三层结构介绍

  表现层

* 也就是我们常说的web 层。它负责接收客户端请求,向客户端响应结果,通常客户端使用http 协议请求web 层,web 需要接收 http 请求,完成 http 响应。

* 表现层包括展示层和控制层:控制层负责接收请求,展示层负责结果的展示。

* 表现层依赖业务层,接收到客户端请求一般会调用业务层进行业务处理,并将处理结果响应给客户端。

* 表现层的设计一般都使用 MVC 模型。(MVC 是表现层的设计模型,和其他层没有关系)

   业务层

* 也就是我们常说的 service 层。它负责业务逻辑处理,和我们开发项目的需求息息相关。web 层依赖业务层,但是业务层不依赖 web 层。

* 业务层在业务处理时可能会依赖持久层,如果要对数据持久化需要保证事务一致性。(也就是我们说的, 事务应该放到业务层来控制)

   持久层

* 也就是我们是常说的 dao 层。负责数据持久化,包括数据层即数据库和数据访问层,数据库是对数据进行持久化的载体,数据访问层是业务层和持久层交互的接口,业务层需要通过数据访问层将数据持久化到数据库中。通俗的讲,持久层就是和数据库交互,对数据库表进行曾删改查的。

3. SpringMVC组件解析


前端控制器:DispatcherServlet
用户请求到达前端控制器,它就相当于 MVC 模式中的 C,DispatcherServlet 是整个流程控制的中心,由
它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
处理器映射器:HandlerMapping
HandlerMapping 负责根据用户请求找到 Handler 即处理器,SpringMVC 提供了不同的映射器实现不同的
映射方式,例如:配置文件方式,实现接口方式,注解方式等。
处理器适配器:HandlerAdapter
通过 HandlerAdapter 对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理
器进行执行。
处理器:Handler (程序员开发)
它就是我们开发中要编写的具体业务控制器。由 DispatcherServlet 把用户请求转发到 Handler。由
Handler 对具体的用户请求进行处理。
视图解析器:View Resolver
View Resolver 负责将处理结果生成 View 视图,View Resolver 首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。比如 Jsp
视图:View (程序员开发)
SpringMVC 框架提供了很多的 View 视图类型的支持,包括:jstlView、freemarkerView、pdfView等。最常用的视图就是 jsp。一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面

4.MVC设计模式

MVC设计模式的任务是将包含业务数据的模块与显示模块的视图解耦。这是怎样发生的?在模型和视图之间引入重定向层可以解决问题。此重定向层是控制器,控制器将接收请求,执行更新模型的操作,然后通知视图关于模型更改的消息。
在这里插入图片描述

在这里插入图片描述

SpringMVC的核心架构:
在这里插入图片描述

5 springmvc和struts2的区别

springmvc入口是servlet struts2入口filter

springmvc 是单例 (效率高) struts2 是双例的

6 springmvc三大组件

处理器映射器

处理器适配器

视图解析器

7 springMVC的优点

可以支持各种视图技术,不仅仅是jsp
与spring框架集成,(如IOC容器,和aop)
清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)。
支持各种请求资源的映射策略

 

8.为什么要使用SpringMVC?


很多应用程序的问题在于处理业务数据的对象和显示业务数据的视图之间存在紧密耦合,通常,更新业务对象的命令都是从视图本身发起的,使视图对任何业务对象更改都有高度敏感性。而且,当多个视图依赖于同一个业务对象时是没有灵活性的。
SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,SpringMVC也是要简化我们日常Web开发。
————————————————
版权声明:本文为CSDN博主「椰子Tyshawn」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/litianxiang_kaola/article/details/79169148

原文地址:https://www.cnblogs.com/liule66/p/12246022.html