springboot系列6,Spring MVC

本文详细介绍了Spring MVC的原理和工作流程,从基础的servlet概念出发,解析了DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver等核心组件的作用。接着,讨论了Spring MVC的注解驱动配置,包括@Configuration、@EnableWebMvc、@WebMvcConfigurer的使用,以及自定义拦截器、参数校验、切面通知和异常处理。最后,提到了MVC的自动装配概念。
摘要由CSDN通过智能技术生成

注意:本章只是mvc,跟springboot没有关系

再说MVC之前,先说一下web的基础架构:servlet,servlet属于非常底层的api,在开发过程中大多数使用http的形式去实现。

servlet特点:请求/响应式(Request/Response)、屏蔽网络通讯的细节(使我们不需要关注通讯相关的东西,只关心请求参数请求头等我们需要的)、具有完整的生命周期

servlet职责:处理请求、资源管理(主要是在servlet装配的时候加载缓存等)、视图渲染。

但由于servlet功能太多,职责不单一,对于底层方便但对于应用并不方便,于是产生了前端控制器(http://www.corej2eepatterns.com/FrontController.htm

关于spring mvc就是构建在servlet引擎上实现的

对于SpringFramework时代的mvc的认识

  • 实现Controller(打标记即可)
  • 配置Spring MVC组件(配置扫包路径、配置映射、配置视图渲染等,使spring mvc可以完整地运行)
  • 部署DispatcherServlet(比如在web.xml中部署)
  • MVC 核心组件

处理器管理(handler)

映射:handlerMapping

Request映射请求到处理器Handler,及其关联的拦截器HandlerInterceptor列表,映射关系是给予不同的HandlerMapping实现的一些标准细节,一种是RequestMappingHandlerMapping支持的@RequestMapping,还有一种是SimpleUrlHandlerMapping维护精确的URI路径与处理器的映射关系。

在mvc的配置文件中会有一个RequestMappingHandlerMapping的配置,打开后向上追溯,可发现实现HandlerMapping接口,这个接口简单来讲用于handler的映射。

适配器:HandlerAdapter

帮助DispatcherServlet调用请求处理器Handler,无需关联实际调用的细节。

        看源码也可以看出,RequestMappingHandlerAdapter也会继承HandlerAdapter。

执行:HandlerExecutionChain

页面渲染

视图解析:ViewResolver

从处理器Handler返回字符类型的逻辑视图名称解析出实际的view对象,该对象将渲染后的内容输出到http响应中。

配置文件可以看出InternalResourceViewResolver,追溯源码,该类继承ViewResolver接口。

另外红框的类,追溯可以看出实现View接口,View接口注释:

 * MVC View for a web interaction. Implementations are responsible for rendering
 * content, and exposing the model. A single view exposes multiple model attributes.
 *
 * <p>This class and the MVC approach associated with it is discussed in Chapter 12 of
 * <a href="http://www.amazon.com/exec/obidos/tg/detail/-/0764543857/"&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值