01-什么是SpringMVC

SpringMVC01

一、什么是MVC

1.1、什么是MVC

  • MVC是Model(模型),View(视图),Controller(控制器)

  • 是将业务逻辑,数据,显示分离的方法来组织代码

  • MVC降低了视图与业务逻辑之间的双向耦合

  • MVC不是一种设计模式,而是一种架构模式,当然不同的MVC存在差异

Model(模型):数据模型,JavaBean组件,包含数据和行为,不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

View(视图):负责视图模型的展示,就是我们写好的页面,浏览器渲染好的视图,展示给用户的那一个页面

Controller(控制器):接受用户请求,将请求委托给Model层的Service,dao处理,将处理完的再结果显示给用户,跳转到那个视图,显示什么信息,也就是Controller做着一个调度员的工作

最典型的MVC:就是JSP+Servlet+javaBean的模式

  1. 用户发起请求
  2. servlet接受请求,调用对应service,dao层处理,返回处理结果
  3. 业务处理结束,servlet再转向一个指定的jsp页面
  4. 响应更新后的数据给前端,显示渲染画面
    在这里插入图片描述

1.2、MVC框架都是需要干什么,干那些事情

  1. 将url映射到java类或者java类的方法
  2. 封装用户提交的数据(表单数据直接自动封装)
  3. 处理请求----调用service层—调用dao层–返回处理的结果
  4. 将响应的数据渲染,显示在指定的jsp货值html页面上面

1.3、常见的服务器端MVC框架有:

Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;

1.4、常见前端MVC框架:

vue、angularjs、react、backbone;由MVC演化出了另外一些模式如:MVP、MVVM 等等…

二、什么是SpringMVC

2.1、概述

Spring MVC是Spring Framework(n. 框架,骨架;结构,构架)的一部分,是基于Java实现MVC的轻量级Web框架

查看官方文档:https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web

为啥我们需要学习SpringMVC?

SpringMVC特点

  1. 轻量级,简单易学
  2. 高效
  3. 与Spring可以很好的结合,无缝衔接
  4. 约定大于配置
  5. 功能强大:RESTful,数据验证,格式化,本地化,主题等等
  6. 简单灵活
  7. 最主要的一个类DispatchServlet(请求分发器),围绕此类设计

2.2、中心控制器(DispatchServlet)

Spring MVC的框架全成围绕着DispatchServlet设计。DispatchServlet作用是将请求分发到不同的处理器

Spring MVC框架,以请求为驱动,围绕DispatchServlet分派请求以及提供其他的功能,DispatchServlet实际上也是一个Servlet,DispatchServlet继承了HttpServlet基类。
在这里插入图片描述

2.3、SpringMVC的原理

  1. 当用户发起请求时,被前端控制器拦截到请求,根据请求参数生成代理对象
  2. 找到请求对应的实际控制器,控制器处理请求,创建数据模型(数据和行为),访问数据库,将模型响应给中心控制器
  3. 控制器使用模型与视图渲染视图结果
  4. 将结果返回给中心控制器,再将结果返回给请求者

在这里插入图片描述

2.4、SpringMVC执行原理

2.4.1、图解分析执行流程

在这里插入图片描述
图为Spring MVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现(具体的业务逻辑,操作数据库等等)

2.4.2、简要分析流程

单词:handler处理器,map映射,adapter适配器,execution执行,resolver解析分析

  1. DispatchServlet表示前置控制器,使整个SpringMVC的控制中心。用户发起任何请求,都会被DispatchServlertl拦截到;DispatchServlet接受请求并且拦截请求

    我么假设用户请求的url为:http://localhost:8080/SpringMVC/hello,

    我们可以将如上URL拆分为三部分:

    • http://localhost:8080服务器域名

    • SpringMVC部署在服务器上的web站点

    • hello表示具体的控制器

      通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

  2. HandlerMap为处理器映射。DisPatchServlet调用HandlerMapping,HandlerMapping根据请求的url查找具体Handler

  3. HandlerExecution表示具体的Handler**,HandlerExecution主要工作是根据url查找控制器,如上url被查找控制器为:hello**。

  4. HandlerExecution将解析后的信息传递给DispatcherServlet, 如解析控制器映射等

  5. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

  6. Handler让具体的Controller执行,返回结果。

  7. **Controller将具体的执行信息返回给HandlerAdapter,**如返回ModelAndView。

  8. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。

  9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet。

  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图

  12. 最终视图呈现给用户

总结

MVC

  • MVC(MOdel,View,Controller),各个模块各司其职
  • Model 数据模型(数据和行为),具体的业务逻辑操作,操作数据库等等
  • View 具体的视图
  • Controller 控制器,用来分发调用各个部分

Spring MVC

  • 是Spring Framework(框架)的一部分
  • 可以和Spring无缝衔接
  • 围绕中心控制器DispatchServlet展开

Spring具体执行过程原理

  1. DispatchServlet接收和拦截所有请求,url
  2. DispatchServlet调用HandlerMap 处理器映射,查找具体的Handler(HandlerExecution)
  3. HandlerExecution根据url解析查找具体的控制器(Controller)信息
  4. HandlerExecution返回解析查找的信息给DispatchServlet(或HandlerMap)
  5. DispatcherServlet调用HandlerAdapter ,HandlerAdapte表示处理器适配器,其按照特定的规则去执行Handler。
  6. Handler让具体的Controller执行,返回结果。
  7. **Controller将具体的执行信息返回给HandlerAdapter,**如返回ModelAndView(视图名和存储设置的信息)。
  8. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
  9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
  10. 视图解析器将解析的逻辑视图名传给DispatcherServlet。
  11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
  12. 最终视图呈现给用户

以上是本人学习狂神说,所做笔记,参考了狂神的博客,谢谢狂神无私奉献。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值