• 带着问题学 Spring MVC 源码: 一、概述


    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

    简单就好,生活可以很德国

    Q:什么是 Spring MVC ? ※

    Spring MVC 是 Spring Web 的一个重要模块。Spring 支持 Web 应用,Spring MVC 是对 MVC 模式的支持。

    Q:MVC 模式? ※

    MVC 模式是种经典的软件架构,分 Model 模型、View 视图及 Controller 控制器 三种角色。架构的意图明显区分三种角色的职责,使其不相互依赖。Java 领域最经典的实现 JSP + Servlet + JavaBean,后续也陆续出来了众多优秀框架,SSH 中的 Struts ,还有 SSM 中的 Spring MVC 等。mvc%e6%a8%a1%e5%bc%8f

    Q: Spring 还要什么其他模块? Web?IOC 容器?AOP?※

    IOC 容器模块、AOP 模块都是。还有数据访问/集成、Web 等模块都是。这里其他不展开讲,其中 Web 模块建立在 IOC 容器之上,要记住。

    来自官网的模块图:spring-overview

    Q: Web 模块包含 springmvc 吗? ※

    包含。Web 模块包含 spring-web、spring-webmvc、spring-websocket和spring-webmvc-portlet。其中 web-mvc 是我们要学习源码包。

    1. spring-web 模块提供基本 Web 集成功能,包括初始化 IOC 容器等工作。

    2. spring-webmvc 包含 MVC 模式的实现和 REST Web 服务的实现。该模块基于了 spring-web 模块。

    资料来源自:官方文档 MVC 章节,其他模块具体参考官网。

    Q: spring-webmvc 模块具体包含什么内容? ※

    spring-webmvc 模块里面包:

    • org.springframework.web.servlet
      提供与应用程序上下文基础结构集成的 Servlet,以及 Spring web MVC 框架的核心接口和类。
    • org.springframework.web.servlet.mvc
      Spring 附带的 Servlet MVC 框架的标准控制器实现。
      • org.springframework.web.servlet.mvc.annotation
        用于基于注解的 Servlet MVC 控制器的支持包。
      • org.springframework.web.servlet.mvc.condition
        用于根据条件匹配传入请求的公共 MVC 逻辑。
      • org.springframework.web.servlet.mvc.method
        用于处理程序方法处理的基于 Servlet 的基础结构,基于在 org.springframework.web.method 包上。
    • org.springframework.web.servlet.view
      提供标准的 View 和 ViewResolver 实现,包括自定义实现的抽象基类。
      • org.springframework.web.servlet.view.freemarker
        支持将 FreeMarker 集成为 Spring Web 视图技术的类。
      • org.springframework.web.servlet.view.json
        支持提供基于 JSON 序列化的 View 实现的类。

    上面列出来核心的包。org.springframework.web.servlet.view 包中, View 视图实现有常见的:JSON 、FreeMarker 等。org.springframework.web.servlet.mvc 包中,Controller 控制层实现包括了注解、程序方法处理等封装。自然,看源码先从 org.springframework.web.servlet 包看其核心的接口和类。

    Q: 核心类和接口有哪些? ※

    DispatcherServlet 类:调度HTTP请求控制器(或者处理器Handler)。

    View 视图层

    ModelAndView 类:模型和视图的持有者。

    View 接口:MVC WEB 交互。该接口的实现负责呈现视图或者暴露模型。

    Controller 控制层

    HandlerMapping 接口: 请求从 DispacherServlet 过来,该接口定义请求和处理程序对象之间的映射。

    HandlerInterceptor 接口:处理程序的执行链接口。

    Q: 又是 MVC 的样子,还有吗? ※

    哦。对了还有张图:

    mvc

    所以重要的类还有 ViewResolver、HandleAdapter等。

    Q: 谢谢,下篇聊什么?

    当然聊重要类的源码实现咯~,下篇见。

    如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

     

     
     
  • 相关阅读:
    【穿插】Python基础之文件、文件夹的创建,对上一期代码进行优化
    爬虫实战【5】送福利!Python获取妹子图上的内容
    爬虫实战【4】Python获取猫眼电影最受期待榜的50部电影
    爬虫实战【3】Python-如何将html转化为pdf(PdfKit)
    爬虫实战【2】Python博客园-获取某个博主所有文章的URL列表
    爬虫实战【1】使用python爬取博客园的某一篇文章
    Oracle中Lpad函数和Rpad函数的用法
    oracle中如何判断blob类型字段是否为空
    将图片文件转化为字节数组字符串,并对其进行Base64编码处理,以及对字节数组字符串进行Base64解码并生成图片
    oracle中使用函数控制过程是否执行(结合job使用)
  • 原文地址:https://www.cnblogs.com/Alandre/p/5991460.html
Copyright © 2020-2023  润新知