Spring MVC 的请求过程

来源:互联网 发布:jst java 编辑:程序博客网 时间:2024/06/01 09:26

请求的历程

这里写图片描述

DispatcherServlet

  • DispatcherServlet 是 Spring MVC 的前端控制器,主要任务是将请求发送给 Spring MVC 控制器 (Controller)。

  • Spring MVC 所有请求都会通过 DispatcherServlet 前端控制器,DispatcherServlet 是单实例的 Servlet 。

handler mapping

  • DispathcerServlet 需要知道应该将请求发送到哪一个控制器。所以 DispatcherServlet 会查询一个或多个处理器映射(handler mapping)来确定请求的下一站。

  • 处理器映射会根据请求的 URL 信息进行决策。

Controller

  • 控制器是一个用于处理请求的 Spring 组件。

  • 通过 handler mapping 后, DispatcherServlet 会将请求发送给选中的控制器。到了控制器,请求会卸下负载(用户提交的信息)并耐心等待控制器处理这些信息。(实际上,设计良好的控制器本身只处理很少甚至不处理工作,而是将业务逻辑委托给一个或者多个服务对象进行处理)

  • 控制器完成处理后,通常会产生一些信息,这些信息需要返回给用户并在浏览器上显示。这些信息称为模型(model)。

  • 仅仅返回 model 是不够的,这些信息需要以用户友好的方式进行格式化,一般会是 HTML。所以信息需要发送给一个视图(VIEW),通常会是 JSP。

  • 控制器所做的最后一件事就是将模型数据打包,并且标示出渲染输出的视图名称。接下来会将请求连同模型和视图名发送回 DispatcherServlet。

这样控制器就不会和特定的视图相耦合,传递给 DispatcherSerclet 的视图名称并不是直接表示某个特定的 JSP。它仅仅传递了一个逻辑名称,DispatcherServlet 将会使用视图解析器(view resolver) 来将逻辑视图名匹配为一个特定的视图实现

视图的实现

  • DispatcherSwervlet 已经知道由哪个视图渲染结果,它的最后一站是视图的实现(可能是 JSP),在这里它交付模型数据。视图使用模型数据渲染输出,这个输出会通过响应对象传递个客户端。
0 0
原创粉丝点击