springMVC组件间协调通信(执行流程)

1.DispatcherServlet收到HTTP请求

    spring web MVC的入口就是一个用户化的Servlet,即DispatcherServlet。在DispatcherServlet收到HTTP请求和响应后,一个典型的spring web MVC的工作流就开始了。

2. DispatcherServlet首先查找所有注册的处理器映射 (HandlerMapping)

3.然后遍历所有的处理器映射,返回处理器执行链

    DispatcherServlet首先查找所有注册的处理器映射,然后遍历所有的处理器映射,直到一个处理器映射返回一个非空的处理器执行链。所以,处理器执行链包含一个需要处理当前HTTP请求的处理器。

    这里,处理器被设计为一种通用的类型,所以需要一个处理器适配器派遣这个控制流到处理器,因为只有支持这种处理器的处理器适配器,才知道如何传递控制流给这种处理器。

4.DispatcherServlet 再请求 处理器适配器(HandlerAdapter) 调用相应的 Handler

    在拿到处理器以后,DispatcherServlet会查找所有注册的处理器适配器,然后遍历所有的处理器适配器,查询是否有一个处理器适配器支持这个处理器。

    如果这样的处理器适配器存在,DispatcherServlet就会将控制权转交给该处理器适配器。处理器适配器和真正的处理器是成对出现的,所以该处理器适配器知道如何使用处理器处理这个请求。

 5.处理器执行完返回模型和视图

  最简单的处理器是控制器。处理器适配器会先传递HTTP请求和HTTP响应给控制器,并期待控制器返回模型和视图(ModelAndView)。这个模型和视图包含一组模型数据和视图逻辑名称,并且最终被返回给DispatcherServlet。

6.调用视图解析器返回一个确定的视图

    然后,DispatcherServlet查找所有注册的视图解析器,并且遍历所有的视图解析器,直到一个视图解析器返回一个确定的视图。

7.对视图进行渲染,响应给用户

    最后,DispatcherServlet把得到的一组模型数据传递给物理视图。视图则会使用某种表现层技术,把模型数据展现成UI界面,并且通过HTTP响应(HttpServletResponse)发送给HTTP用户。

 

如果本文对您有很大的帮助,还请点赞关注一下。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Spring MVC执行流程主要涉及以下几个步骤: 1. 客户端发送请求:浏览器或其他客户端向服务器发送HTTP请求。 2. 前端控制器接收请求:DispatcherServlet作为前端控制器接收到客户端的请求。 3. 处理器映射器进行映射:DispatcherServlet调用处理器映射器(HandlerMapping)来进行URL与处理器的映射,确定处理该请求的Controller。 4. 处理器适配器调用处理器:DispatcherServlet调用处理器适配器(HandlerAdapter)来执行Controller中的相应方法,并传递相应的请求参数。 5. 处理器执行业务逻辑:Controller中的方法执行业务逻辑,并返回一个ModelAndView对象。 6. 视图解析器解析视图:DispatcherServlet调用视图解析器(ViewResolver)来解析Controller返回的视图名,得到具体的视图对象。 7. 视图渲染:视图对象负责渲染最终的视图结果,将数据填充到视图中,并生成最终的HTML响应。 8. 响应返回给客户端:DispatcherServlet将最终生成的HTML响应返回给客户端。 在这个流程中,各个组件的作用如下: - DispatcherServlet:作为前端控制器,接收客户端请求,并将请求转发给对应的处理器。 - HandlerMapping:处理器映射器,根据请求的URL确定处理该请求的Controller。 - HandlerAdapter:处理器适配器,根据Controller的类型调用相应的方法来执行业务逻辑。 - Controller:处理器,负责处理业务逻辑,通常是一个POJO类。 - ModelAndView:存储处理结果数据和视图的对象。 - ViewResolver:视图解析器,根据视图名解析出具体的视图对象。 - View:负责渲染最终的视图结果,通常是一个JSP或HTML页面。 这些组件协同工作,完成了Spring MVC执行流程

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游王子og

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值