Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

  • 计算机基础

  • 框架|中间件

    • Spring

      • Spring-控制反转IOC
      • Spring-面向切面编程AOP
      • Spring常见面试问题
      • SpringMVC常见面试问题
        • 1 说说对MVC的了解?
        • 2 Spring MVC 主要组件
        • 3 SpringMVC 工作流程
      • SpringMVC分析
      • SpringBoot自动配置原理
      • Spring三级缓存解决循环依赖
      • Spring事务测试分析
    • MyBatis

    • MySQL

    • Redis

    • 消息队列

    • Zookeeper

    • Git

    • Maven

    • Gradle

  • 架构

  • 后端
  • 框架|中间件
  • Spring
Marvel
2022-07-16
目录

SpringMVC常见面试问题

# Spring MVC

# 1 说说对MVC的了解?

MVC是模型(Model)、视图(VIew)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。降低了视图与业务逻辑的耦合。

Model:数据模型,提供要展示的数据,包含数据和业务(dao和service)。

View:负责模型的展示,一般就是我们见到的用户界面。

Controller:接收用户请求,委托模型进行处理,处理完毕后把返回的模型数据返回给视图,视图负责展示。

Model 1时代

在Web早期开发中,主要分为两层:视图层、模型层

优点:架构简单,适合小项目开发;

缺点:JSP职责不单一,职责过重,不利于维护。

image-20221114152044835

Model 2 时代

Java Bean(Model)+ JSP(View)+ Servlet(Controller)

  • Model:系统涉及的数据,也就是dao和bean
  • View:展示模型中的数据,只是用来展示
  • Controller:处理用户请求,返回数据给JSP并展示给用户。
image-20221114152103300

Model 2的抽象程度和封装程度远远不够,无法避免重复造轮子,大大降低程序的维护性和复用性。

# 2 Spring MVC 主要组件

1)DispatcherServlet

是一种前端控制器,由框架提供。

作用:统一处理请求和响应。除此之外还是整个流程控制的中心,由 DispatcherServlet 来调用其他组件,处理用户的请求

2)HandlerMapping

处理器映射器,由框架提供。

作用:根据请求的 url、method 等信息来查找具体的 Handler(一般来讲是Controller)

3)Handler(一般来讲是Controller)

处理器,注意,这个需由工程师自己开发。

作用:在 DispatcherServlet 的控制下,Handler对具体的用户请求进行处理

4)HandlerAdapter

处理器适配器 ,由框架提供。

作用:根据映射器找到的处理器 Handler 信息,按照特定的规则去执行相关的处理器 Handler。

小结:

Handler 是用来干活的工具;

HandlerMapping 用于根据需要干的活找到相应的工具;

HandlerAdapter 是使用工具干活的人。

5)ViewResolver

视图解析器,由框架提供。

作用: ViewResolver 负责将处理结果生成 View 视图。 ViewResolver 首先根据逻辑视图名解析成物理图名,即具体的页面地址,再生成 View 视图对象,最后对 View 进行渲染将处理结果通过页面展示给用户。

6)View

视图,工程师自己开发

作用:View接口的职责就是接收model对象、Request对象、Response对象,并渲染输出结果给Response对象。

# 3 SpringMVC 工作流程

image-20220609225445322

  1. 用户通过浏览器发起 HttpRequest 请求到前端控制器 (DispatcherServlet)。
  2. DispatcherServlet 将用户请求发送给处理器映射器 (HandlerMapping)。
  3. 处理器映射器 (HandlerMapping)会根据请求,找到负责处理该请求的处理器(handler),并将其封装为处理器执行链返回 (HandlerExecutionChain) 给 DispatcherServlet
  4. DispatcherServlet 会根据处理器执行链中的处理器,找到能够执行该处理器的处理器适配器(HandlerAdaptor) --注,处理器适配器有多个
  5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller
  6. Controller 将处理结果及要跳转的视图封装到一个对象 ModelAndView 中并将其返回给处理器适配器 (HandlerAdaptor)
  7. HandlerAdaptor 直接将 ModelAndView 交给 DispatcherServlet ,至此,业务处理完毕
  8. 业务处理完毕后,我们需要将处理结果展示给用户。于是DisptcherServlet 调用 ViewResolver,将 ModelAndView 中的视图名称封装为视图对象
  9. ViewResolver 将封装好的视图 (View) 对象返回给 DispatcherServlet
  10. DispatcherServlet 调用视图对象,让其自己 (View) 进行渲染(将模型数据填充至视图中),形成响应对象 (HttpResponse)
  11. 前端控制器 (DispatcherServlet) 响应 (HttpResponse) 给浏览器,展示在页面上。
编辑 (opens new window)
#Spring#SpringMVC#框架
上次更新: 2023/08/20, 21:21:52
Spring常见面试问题
SpringMVC分析

← Spring常见面试问题 SpringMVC分析→

最近更新
01
位运算
05-21
02
二叉树
05-12
03
Spring三级缓存解决循环依赖
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式