spring mvc

本文详细介绍了MVC架构中各组件的作用及其在Spring MVC中的工作流程。包括DispatcherServlet如何将请求分发给Controller,Controller如何处理请求并返回模型数据,以及视图如何渲染这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MVC中,M(model)模型,V(view)视图,C(Controller)控制器三个模块,在web的请求处理中都承担一个什么样的角色,作用是什么,这个问题是我面试spring时基本都会问的一个基础问题(可以在我的另外一系列博客中看到我对面试题的整理),因为我觉得正确的理解mvc的概念是深入理解源码的基础。

下图是我从《Spring实战》这本书中择(zhai二声)下来的。
这里写图片描述
上图展示了一个请求在SpringMVC中的处理路径,总按7步来:

  1. 一个请求立刻浏览器后,带着请求内容的信息,至少会包含请求的URL,但是还可能带有其他的信息,如用户提交的表单等。请求第一站是DispatcherServlet(调度控制器),DispatcherServlet的任务是将请求交给Controller。
  1. DispatcherServlet会查询一个或多个Handler Mapping(处理器映射),处理器映射根据URL信息来确定请求应该交给哪一个Controller。
  2. Controller拿到请求之后,就可以做参数获取、相应的业务处理、到数据库中查询数据等,取决于实际需求,它的任务就是处理请求信息,也是平时开发人员唯一编码的部分。
  3. 处理完之后,Controller会返回一些信息,即模型(model),这些信息需要返回给用户并在浏览器中显示。不过光有信息还不够,我们还需要以用户友好的方式进行格式化,即通过视图(view)展示,不过Contrller不会直接返回视图,而是返回model + 逻辑视图名,再次给到DispatcherServlet。
  4. DispatcherServlet使用View Resolver(视图解析器)根据逻辑视图名找到一个特定的视图实现,可能是也可能不是jsp。
  5. 视图将把model数据渲染进视图中。
  6. 返回相应视图给客户端。
    上面的7个步骤基本上是普通的一个web请求的处理路径,但也有情况并不完全需要上面7个步骤,比如请求需要的是返回model数据交给前端自己处理,比如交给js处理,那么就不需要返回视图名。我们使用@ResponsBody注解某个方法,则这个方法返回的对象,将不会经过5视图解析器与6视图渲染这两步,会直接返回数据给client。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值