Spring MVC简单小结

简介

MVC模式

在MVC框架中,控制器(Controller)用于执行业务逻辑并产生模型数据(Model),而视图(View)则用于渲染模型数据

MVC模式,即Model-View-Controller。View指表现层,Model,是用来承载数据的抽象结构,而Controller则是View和Model的桥梁。View存在与前端代码中,Controller,Model存在与后端代码中。
在后端代码中,为了保证代码的整洁,易读性,一般会采用分层的办法,自顶向下分为controller层,service层,dao层,数据层或者叫持久层(直接与数据库打交道)。有时候,为了达到解耦的目的,会在上述基层中间加入响应的接口层,以使得接口与实现分离。在更加大型的网站中,会出现更加复杂的架构,比如dao层与数据层之间要有缓存层,或者访问压力增大后,需要使用集群,负载均衡等高级技术

Spring MVC

Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,从而简化Web开发:

  • 使用了MVC架构模式的思想,将web层进行指责解耦
  • 基于请求驱动:使用请求-响应模式

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

Spring MVC核心组件与执行流程

Spring执行流程1

(1) Http请求:客户端请求提交到DispatcherServlet。
(2) 寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。
(3) 调用处理器:DispatcherServlet将请求提交到Controller。
(4)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。
(5)(6)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
(7) Http响应:视图负责将结果显示到客户端。

在以上八个步骤中,DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver等核心组件相互配合来完成Spring MVC 请求-响应的整个工作流程。对于开发者来说是透明的。开发者只需要关注Handler(Controller)当中完成对请求的业务逻辑处理即可。

Spring执行流程2
具体实现
1. 用户向服务器发送请求,请求被Spring MVC的前端控制器DispatcherServlet截获;
2. DispatcherServlet对请求URL(统一资源定位符)进行解析,得到URI(请求资源标识符)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关对象,包括Handler对象以及Handler对象对应的拦截器,这些对象会被封装到一个 HandlerExecutionChain对象 当中返回;
3. DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。一个HandlerAdapter会被用于处理多种(一类)Handler,并调用Handler实际处理请求的方法;
4. 在调用Handler实际处理请求的方法之前,HandlerAdapter 首先会结合用户配置对请求消息进行转换(例如,将JSON/XML请求消息转换成一个Java对象),然后通过DataBinder将请求中的模型数据绑定到Handler(Controller)对应的处理方法的参数中。在消息转换和数据绑定过程中,Spring MVC会做一些额外的处理,比如数据类型转换、数据格式化工作和数据合法性校验等;
5. Handler调用业务逻辑组件完成对请求的处理后,向DispatcherServlet返回一个ModelAndView对象,ModelAndView对象中应该包含视图名或者视图名和模型;
6. DispatcherServlet根据返回的ModelAndView对象,选择一个合适的ViewResolver(视图解析器)返回给DispatcherServlet;
7. DispatcherServlet调用视图解析器ViewResolver结合Model来渲染视图View;
8. DispatcherServlet将视图渲染结果返回给客户端。

参考:
Spring MVC 简述 超具体超详细,后续还可以阅读
Spring MVC入门 —— 跟开涛学SpringMVC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值