Spring in Action 4读书笔记之Spring MVC中请求的处理流程

本文详细解析Spring MVC中请求的处理流程,从DispatcherServlet接收请求开始,经过控制器选择、业务逻辑处理、模型构建、视图解析到最后响应给客户端。探讨了每个步骤的关键角色,如handler mappings、controllers、services、视图解析器等。
摘要由CSDN通过智能技术生成

我计划完成 50 到 100 篇有关 Spring 的文章,这是第十四篇。本文对应Spring in Action(Spring实战)第四版第五章的5.1.1(5.1.1 Following the life of a request),将讲述Spring MVC中请求的流程。

每当用户在浏览器点击链接或者提交表单的时候,就会生成一个request。request就像一个邮差,负责将信息从一个地方地方传递到另一个地方。

request很忙,它从离开浏览器开始,一直到跟着response返回到浏览器结束,会经过很多站,而每一站都释放一些信息,又带上一些新的信息。下图显示了在Spring MVC中,request在哪些站点停留。

在这里插入图片描述
.png)]

  1. 第一步,当request从浏览器发出时,它携带了用户的请求信息,至少会携带请求的url地址,但也可能携带其它数据,比如用户在表单中提交的信息。
    在Spring MVC中,DispatcherServlet实现了第一步的功能。和大多数基于Java的web框架一样,Spring MVC通过一个前端控制器servlet(front controller servlet)来处理请求。前端控制器是一种通用的web应用特征,使用一个单独的servlet,将请求转发给应用的其它组件,而后面的这些组件负责实际的处理。在Spring MVC中,DispatcherServlet就是这个前端控制器。
  2. 第二步,为请求找到匹配的控制器。DispatcherServlet的任务是将请求发送给Spring MVC控制器(controller)。控制器负责处理这些请求。但是一个web应用一般不会只有一个控制器,所以DispatcherServlet需要一些帮助来决定将请求发给哪个控制器。要做到这点,DispatcherServlet需要询问一个或多个handler mappings,因为handler mappings注重请求的url。
  3. 第三步,DispatcherServlet将请求发给选中的控制器,在控制器中,请求转交了用户在表单中提交的信息,并且耐心等待控制器处理这些信息。实际上,在设计得比较好的应用中,控制器自身一般很少处理业务逻辑,而是调用service来处理。
  4. 第四步,控制器或service处理业务逻辑之后,会产生一些信息,返回给用户,并且在浏览器中展示。这些信息被称为model。把这些信息直接返回给浏览器往往不够,它往往需要以用户友好的方式,比如html的方式返回。所以,需要视图,比如JSP来展示这些信息。控制器会将model打包好,并且决定要渲染model的视图名称,然后将请求,以及model和视图名称,返回给DispatcherServlet。
  5. 第五步,DispatcherServlet需要依靠视图解析器,根据视图名称,匹配具体的视图实现。需要注意的是,视图实现不一定是JSP,也可以是其它类型的模板。
  6. 第六步,视图将model中的数据进行渲染,生成需要返回给客户端的输出。
  7. 第七步,将结果返回给客户端。

以上就是Spring MVC中请求的处理流程,有哪里写得不够清楚的地方,欢迎在评论区进行讨论。

欢迎扫描下方二维码关注微信公众号【谈谈IT】,第一时间获取最新文章。
欢迎关注同名公众号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值