Spring MVC 架构 | 与原生Servlet区别 | 请求处理流程

SpringMVC 简介

SpringMVC 全名叫 Spring Web MVC,是⼀种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 SpringFrameWork 的后续产品。下图是Spring MVC 在 Spring 架构中的位置

它通过⼀套注解,让⼀个简单的 Java 类成为处理请求的控制器,⽽⽆须实现任何接⼝。同时它还⽀持 RESTful 编程⻛格的请求。主要解决表现层问题的web框架,是基于 MVC 设计模式的。主要职责就是处理前端HTTP请求。 Spring MVC 本质可以认为是对servlet的封装,简化了我们serlvet的开发。

与原生 Servlet 对比。原生 Servlet 中,每个 Servlet 处理一个请求。而 Spring MVC 通过 DispatcherServlet 前端控制器,来派发请求至处理不同业务逻辑的 Handler (@Controller、@RequestMapping)。

Spring MVC 请求处理流程

第⼀步:⽤户发送请求⾄前端控制器DispatcherServlet。
第⼆步:DispatcherServlet收到请求调⽤HandlerMapping处理器映射器。
第三步:处理器映射器根据请求Url找到具体的Handler(后端控制器),⽣成处理器对象及处理器拦截器(如果有则⽣成)⼀并返回DispatcherServlet。
第四步:DispatcherServlet调⽤HandlerAdapter处理器适配器去调⽤Handler。
第五步:处理器适配器执⾏Handler。
第六步:Handler执⾏完成给处理器适配器返回ModelAndView。
第七步:处理器适配器向前端控制器返回 ModelAndView,ModelAndView 是SpringMVC 框架的⼀个底层对象,包括 Model 和 View。
第⼋步:前端控制器请求视图解析器去进⾏视图解析,根据逻辑视图名来解析真正的视图。
第九步:视图解析器向前端控制器返回View。
第⼗步:前端控制器进⾏视图渲染,就是将模型数据(在 ModelAndView 对象中)填充到 request 域。
第⼗⼀步:前端控制器向⽤户响应结果。

Spring MVC 封装数据

分别写三个方法,使用ModelMap、Module、Map封装数据(也可以在方法中通过new对象)。

分别请求这三个方法,从控制台看到他们的数据类型

可以看到底层都是 BindingAwareModelMap,我们来查看下这个类的继承体系:

所以说,使用ModelMap、Module、Map封装数据,它们都会将数据放到请求域中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值