spring-mvc运行过程

概述

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。

运行过程

  • DispatcherServlet:分发器,所有的请求都由它来统一分发,请求会被分发给对应的Handler。
  • HandlerMapping:处理器映射器,解析请求链接,根据请求链接找到执行这个请求的Handler。
  • HandlerAdapter:处理器适配器,调用具体的Handler处理用户请求。
  • Controller:页面控制器(Handler的一种),处理用户请求,处理完成后将 ModelAndView 对象返回给 DispatcherServlet。
  • ViewResolver:视图解析器,用于解析 MdoelAndView,将 MdoelAndView 中的逻辑视图名变为一个真正的 View 对象,并将 MdoelAndView 中的 Model 取出。

逻辑运行过程:

  1. :Client发起请求到DispatcherServlet。
  2. :DispatcherServlet请求HandlerMapping查找对应Handler 。
  3. :HandlerMapping向DispatcherServlet返回Handler(HandlerMapping会把Handler映射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略)。
  4. :DispatcherServlet调用HandlerAdapter去执行Handler。
  5. :HandlerAdapter将会根据适配结果执行Handler(Controlelr)。
  6. :Handler执行完成后向HandlerAdapter返回ModelAndView。
  7. :HandlerAdapter向前端控制器返回ModelAndView。
  8. :DispatcherServlet请求ViewResolver去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)),通过这种策略很容易更换其他视图技术,只需要更改ViewResolver即可。
  9. :ViewResolver向DispatcherServlet返回View。
  10. :DispatcherServlet进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request域)。
  11. :DispatcherServlet向用户响应结果 。

在这里插入图片描述

物理运行过程:

  1. 客户端发送请求,被DispatcherServlet拦截,进入其service()。
  2. service()截取请求url的字符串获取有效的url。
  3. service用url去spring mvc的子容器handlerMpping中的map集合中寻找映射关系(读取方法),并将查找将结果返回给service()。
  4. service()用handlerMpping返回结果去springmvc的子容器中得到指定Controller对象, 并用HandlerAdaper反射调用映射指定的方法,把方法的返回值给service()。
  5. service()接收到了Model数据和View的页面名称,把ModelAndView(视图解析器)送给内部资源视图解析器中把Model数据渲染到页面上,view拼装响应的url,并把渲染后的数据返回service()。
  6. service()把数据响应给客户端,service()调用完毕,以后循环往复。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值