【springMVC】SpringMVC的工作流程解析

SpringMVC的工作流程解析

1. MVC概述

​ MVC是一种软件架构思想,将软件按模型、视图、控制器来划分,核心思想是通过将业务逻辑、数据、显示分离来组织代码。

Model(模型层):具体就是项目中的 JavaBean,作用是处理数据

View(视图层):具体指项目中的 html 或 jsp 页面,作用是和用户交互,展示数据

Controller(控制层):作用是接收请求和响应浏览器,如项目中的Servlet

按照业务逻辑,JavaBean分两类:

一类称为实体类Bean:专门存储业务数据的,如Student、User等

一类称为业务处理的Bean:指Service或 Dao 对象,专门用于处理业务逻辑和数据访问

img

1.1 MVC模式下的工作流程

​ 用户通过视图层发送请求到服务器,在服务器中请求被Controller层接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器。

2. SpringMVC

2.1 概述

​ SpringMVC是一个基于Spring开发的MVC轻量级框架,是Spring3.0后发布的组件,SpringMVC和Spring可以无缝整合,使用DispatcherServlet作为前端控制器,且内部提供了处理器映射器、处理器适配器、视图解析器等组件,可以简化JavaBean封装,Json转化、文件上传等操作,其将web层进行解耦,并管理应用所需对象的生命周期,大大地简化了日常的开发。
​ Spring MVC 下,一般把后端项目分为 Service 层(处理业务)、Dao 层(数据库操作)、Entity 层(实体类)、Controller 层(控制层,返回数据给前台页面)。

简单总结:
SpringMVC 是 Spring 提供的一个实现了Web MVC 设计模式的轻量级 Web 框架。
MVC 是一种思想,而 Spring MVC 是对 MVC 思想的具体实现。

2.2 SpringMVC的核心组件

  1. DispatcherServlet:前置控制器,是整个流程控制的核心,用于控制其他组件的执行,进行统一调度,降低组件之间的耦合性,相当于总指挥。
  2. Handler:处理器,完成具体的业务逻辑,相当于 Servlet 或 Controller。
  3. HandlerMapping:处理器映射器,在DispatcherServlet 接收到请求之后,通过 HandlerMapping 将不同的请求映射到不同的 Handler。
  4. HandlerInterceptor:处理器拦截器,是一个接口,如果需要完成一些拦截处理,可以实现该接口。
  5. HandlerExecutionChain:处理器执行链,包括两部分内容:Handler 和 HandlerInterceptor(系统会有一个默认的 HandlerInterceptor,如果需要额外设置拦截,可以添加拦截器)。
  6. HandlerAdapter:处理器适配器,Handler 执行业务方法之前,需要进行一系列的操作,包括表单数据的验证、数据类型的转换、将表单数据封装到 JavaBean 等,这些操作都是由 HandlerApater 来完成,开发者只需将注意力集中业务逻辑的处理上,DispatcherServlet 通过 HandlerAdapter 执行不同的 Handler。
  7. ModelAndView:装载了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet。
  8. ViewResolver:视图解析器,DispatcheServlet 通过它将逻辑视图解析为物理视图,最终将渲染结果响应给客户端。

2.3 SpringMVC的工作流程

image-20231127200234061

  1. 客户端向服务端发送一次请求,这个请求会先到前端控制器 DispatcherServlet(也叫中央控制器)。
  2. DispatcherServlet 接收到请求后会调用 HandlerMapping 处理器映射器。由此得知,该请求该由哪个 Controller 来处理(并未调用 Controller,只是得知)
  3. DispatcherServlet 调用 HandlerAdapter 处理器适配器,告诉处理器适配器应该要去执行哪个 Controller
  4. HandlerAdapter 处理器适配器去执行 Controller 并得到 ModelAndView(数据和视图),并层层返回给 DispatcherServlet
  5. DispatcherServlet 将 ModelAndView 交给 ViewReslover 视图解析器解析,然后返回真正的视图。
  6. DispatcherServlet 将模型数据填充到视图中
  7. DispatcherServlet 将结果响应给客户端

2.4 SpringMVC的优点

① 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

② 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可(因为是基于Spring框架)

③ 代码清新简洁,大幅度提升开发效率

度高,可插拔式组件即插即用,想要什么功能配置相应组件即可(因为是基于Spring框架)

③ 代码清新简洁,大幅度提升开发效率

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值