当前位置: 首页 > news >正文

一、初始 Spring MVC

文章目录

  • 一、回顾 MVC 模式
  • 二、初始 Spring MVC
    • 2.1 Spring MVC 核心组件
      • 2.1.1 前端控制器(DispatcherServlet)
      • 2.1.2 处理器映射器(HandlerMapping)
      • 2.1.3 处理器适配器(HandlerAdapter)
      • 2.1.3 后端控制器(处理器)
      • 2.1.4 视图解析器(ViewResolver)
    • 2.2 Spring MVC 的执行流程



一、回顾 MVC 模式


MVC 是模型(Model),视图(View),控制器(Controller)的简写,是一种软件设计的代码规范,将业务逻辑、数据以及显示完全分离开来。MVC 并不是一种设计模式,MVC 是一种结构模式。 并且不同的 MVC 之间也是存在着差异的。

  • Model(模型):

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

  • View(视图):

    负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

  • Controller(控制器):

    接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

  • 职责分析:

    • Controller:控制器

      • 取得表单数据

      • 调用业务逻辑

      • 转向指定的页面

    • Model:模型

      • 业务逻辑

      • 保存数据的状态

    • View:视图

      • 显示页面

  • MVC 模式的主要作用: 降低视图与业务逻辑之间的双向耦合

最典型的 MVC 就是 JSP + servlet + javabean 的模式。




二、初始 Spring MVC


       Spring MVC官方文档


  • 什么是 Spring MVC

    •        Spring MVC就是一个 Spring 内置的 MVC 框架,是基于Java实现MVC的轻量级Web框架。

             MVC框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。支持 RESTful风格的URL请求。

             采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

  • MVC框架要做哪些事情

    1、将url映射到java类或java类的方法 .

    2、封装用户提交的数据 .

    3、处理请求–调用相关的业务处理–封装响应数据 .

    4、将响应的数据进行渲染 . jsp / html 等表示层数据 .

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

    • Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:vue、angularjs、react、backbone;由MVC演化出了另外一些模式如:MVP、MVVM 等等…

  • Spring MVC 的作用

    • MVC模式(Model-View-Controller):解决页面代码和后台代码的分离。

  • Spring MVC 的底层

    •        在没有使用 Spring MVC 之前我们都是使用 Servlet 在做 Web 开发。但是使用 Servlet 开发在接收请求参数,数据共享,页面跳转等操作相对比较复杂。Servlet 是 java 进行 web 开发的标准,既然 Spring MVC 是对 Servlet 的封装,那么很显然 Spring MVC 底层就是Servlet,Spring MVC 就是对 Servlet 进行深层次的封装




2.1 Spring MVC 核心组件


       Spring MVC 有着多个组件,这些核心组件共同协作,使得Spring MVC能够处理请求、调度处理器、渲染视图,并提供灵活的拦截器和数据绑定机制。通过使用这些组件,我们可以方便地构建和管理Web应用程序的请求处理流程。


2.1.1 前端控制器(DispatcherServlet)


  •        前端控制器是Spring MVC框架的核心,它充当了所有请求的中央处理器。在Spring MVC中,DispatcherServlet 充当了前端控制器的角色。

            前端控制器负责接收用户的提交的所有请求,如传统的jsp文件,调用其他的控制器 Controller 对象,并把请求处理的结果显示给用户。并且可以接收所有的 HTTP 请求,并将请求分发给合适的处理器进行处理。

    • DispatcherServlet :该类本身就是一个 Servlet,因为其继承了 Servlet



2.1.2 处理器映射器(HandlerMapping)

  • 执行后端控制器(Handler),拿到后端控制器返回的结果 ModelAndView 后将结果返回给前端控制器 DispatcherServlet。

2.1.3 处理器适配器(HandlerAdapter)

  • 处理器适配器,执行后端控制器(Handler),拿到后端控制器返回的结果ModelAndView后将结果返回给前端控制器 DispatcherServlet。

2.1.3 后端控制器(处理器)

  • 后端控制器(处理器)(Handler),主要负责处理前端请求,完成业务逻辑,生成ModelAndView对象返回给 HandlerAdapter。

2.1.4 视图解析器(ViewResolver)

  • 视图解析器(ViewResolver),主要负责将从DispatcherServlet中拿到的ModelAndView对象进行解析,生成View对象返回给DispatcherServlet。




2.2 Spring MVC 的执行流程


  • Spring MVC 的执行流程图,如下所示:

    在这里插入图片描述

  • Spring MVC 具体的执行流程

    • 1.客户端浏览器向前端控制器(DispatcherServlet)发出请求。

    • 2.DispatcherServlet接收到请求后,调用处理器映射器(HandlerMapping)。

    • 3.HandlerMapping根据请求url查找相应的处理器(Handler,也称后端控制器),返回处理器对象(Handler),并且如果有处理器拦截器(HandlerInterceptor)的话,会将处理器对象(Handler)和处理器拦截器对象(HandlerInterceptor)一并返回给DispatcherServlet

    • 4.DispatcherServlet拿到这些信息后,会调用处理器适配器(HandlerAdapter),HandlerAdapter会执行HandlerHandler执行处理DispatcherServlet发来的请求,生成ModelAndView对象返回给HandlerAdapter

    • 5.HandlerAdapterModelAndView对象返回给DispatcherServlet

    • 6.DispatcherServlet在拿到ModelAndView对象之后,将ModelAndView对象发给视图解析器(ViewResolver)。

    • 7.ViewResolverModelAndView对象进行解析,生成View对象,将View对象返回给DispatcherServlet

    • 8.DispatcherServlet拿到View对象,对jsp 页面进行渲染(将模型数据填充到视图中),将渲染后的页面呈现给用户。

http://www.lryc.cn/news/122329.html

相关文章:

  • 《爬虫》爬取页面图片并保存
  • 【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON
  • 做接口测试如何上次文件
  • Java SPI机制详解-01
  • 由浅入深C系列六:C中实现字符串trim的功能
  • 博客网站添加复制转载提醒弹窗Html代码
  • ubuntu下nfs服务安装
  • Unity框架学习--2
  • WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS
  • 82. 删除排序链表中的重复元素 II
  • centos 7.x 单用户模式
  • 取证--理论
  • Tik Tok娱乐+电商MCN怎么做?
  • java 自定义xss校验注解实现
  • Selenium图片滑块验证码
  • CAP理论与MongoDB一致性,可用性的一些思考
  • lc2536.子矩阵元素加1
  • C#使用OpenCv(OpenCVSharp)图像全局二值化处理实例
  • Patch SCN一键解决ORA-600 2662故障---惜分飞
  • const、指针、引用的综合
  • gitee linux免密/SSH 方式连接免登录
  • 计网第一章
  • windows升级记
  • 【Windows 常用工具系列 5 -- Selenium IDE的使用方法 】
  • 现代无人机技术
  • 【机器学习 | 数据预处理】 提升模型性能,优化特征表达:数据标准化和归一化的数值处理技巧探析
  • 渐进增强和优雅降级区别
  • 使用provision创建的arxml文件,导入到第三方工具需要注意哪些方面?
  • Node.js的核心模块——path
  • 【MAC】 M2 brew安装 docker 运行失败 解决