大部分Java应用都是Web应用,展现层是WEB应用不可忽略的重要环节.Spring为了展现层提供了一个优秀的WEB框架Spring MVC .

文章目录

  • 一.MVC模式简介
  • 二.SpringMVC介绍
  • 三.SpringMVC特点
  • 四.原理解析 (面试常考)
  • 五. 组件说明
  • 六.核心分发器DispatcherServlet

一.MVC模式简介

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

  • MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
  • Model(模型)表示应用程序核心(比如数据库记录列表)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)。
  • MVC 分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。

二.SpringMVC介绍

  • Spring MVC 是一个表现层框架,它是Spring框架的一部分,用于完成于视图层进行数据交互的工作。

三.SpringMVC特点

  • ①Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术
  • ②Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制

四.原理解析 (面试常考)

  • 1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.
  • 2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)
  • 3-4、DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用
  • 5、Handler对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。
  • 6、Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。
  • 7、Dispatcher通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端

五. 组件说明

  • DispatcherServlet:前端控制器

前端控制器用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性

  • HandlerMapping:处理器映射器

处理器映射器HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式。

  • Handler:处理器

Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

  • HandlerAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

  • View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

  • View:视图

springmvc框架提供了很多的View视图类型的支持。


六.核心分发器DispatcherServlet

  • DispatcherServlet是Spring MVC的"灵魂"和"心脏",它负责接受HTTP请求并协调 SpringMVC的各个组件完成请求处理的工作。和任何Servlet一样,用户必须在web.xml中配置好DispatcherServlet。
  • (1)DispatcherServlet继承关系
  • (2)DispatcherServlet介绍
  • DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。
  • (3) DispatcherServlet主要职责

DispatcherServlet主要用作职责调度工作,本身主要用于控制流程

  • 文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;

  • 通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个
    HandlerInterceptor拦截器);

  • 通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);

  • 通过ViewResolver解析逻辑视图名到具体视图实现;

  • 本地化解析;

  • 渲染具体的视图等;

  • 如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

  • (4)DispatcherServlet辅助类

  • spring中的DispatcherServlet使用一些特殊的bean来处理request请求和渲染合适的视图。这些bean就是SpringMVC中的一部分。你能够通过在WebApplicationContext中的一个或多个配置来使用这些特殊的bean。但是,你不需要在SpringMVC在维护这些默认要使用的bean时,去把那些没有配置过的bean都去初始化一道。


  • 初识Spring框架请参考:Spring框架基础
  • Spring-IOC框架请参考:IOC详解
  • Spring-AOP框架请参考:AOP详解

  • The best investment is in yourself
  • 2020.03.28 记录辰兮的第39篇博客

深入学习SpringMVC框架相关推荐

  1. 框架写mysql插入为空_学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法...

    Idea简单SpringMVC框架配置 前边已经介绍过了Struts在Idea上的配置,相对于Struts来说,我觉得SpringMVC有更多的优势,首先Struts是需要对action进行配置,页面 ...

  2. java mvc框架代码_JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码)

    原标题:JAVA技术学习笔记:SpringMVC框架(内附入门程序开发代码) JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的 ...

  3. SpringMVC框架--学习笔记(下)

    接上篇:SpirngMVC框架--学习笔记(上):https://blog.csdn.net/a745233700/article/details/81038382 17.全局异常处理: 系统中异常包 ...

  4. SpringMVC框架--学习笔记(上)

    1.SpringMVC入门程序: (1)导入jar包:spring核心jar包.spring-webmvc整合Jar包 (2)配置前端控制器:web.xml文件中 <?xml version=& ...

  5. SpringMVC框架学习总结

    Spring MVC框架学习总结                          --田超凡 一.MVC设计模式 MVC设计模式是软件工程中的一种架构模式,他强制性的使软件的输入.处理和输出分开,把 ...

  6. SpringMVC框架 学习DAY_03:@RequestMapping注解/拦截器与过滤器

    1. 关于@RequestMapping注解 在控制器中,在处理请求的方法之前添加@RequestMapping注解,可以配置请求路径与处理请求的方法的映射关系! 在@RequestMapping注解 ...

  7. SpringMVC框架 学习DAY_01:框架概括 / 简易应用 / 核心执行流程图 /在框架下显示HTML模板页面/ 接受请求

    1. SpringMVC框架的作用 MVC = Model(数据模型) + View(视图) + Controller(控制器) SpringMVC框架主要解决了接收请求与处理响应的问题,也可以认为是 ...

  8. Java EE——SpringMVC框架学习

    文章目录 一.SpringMVC的基本概念: 1.三层架构和MVC: 2.SpringMVC的概述: 3.SpringMVC在三层架构的位置: 二.SpringMVC 的入门: 三.入门案例的执行过程 ...

  9. Java培训学习笔记分享:SpringMVC框架

    JavaEE体系结构包括四层,从上到下分别是应用层.Web层.业务层.持久层.Struts和SpringMVC是Web层的框架,Spring是业务层的框架,Hibernate和MyBatis是持久层的 ...

最新文章

  1. “小霸王学习机”再现?树莓派400正式发布,售价70美元
  2. Visual Studio找不到iOS模拟器
  3. linux配置tomcat内存配置文件,Linux与Windows下tomcat内存设置
  4. STM32开发 -- IAP详解
  5. VTK:绘图之ScatterPlot
  6. VTK:几何对象之PolyLine
  7. Laravel核心解读--服务容器(IocContainer)
  8. 【AI面试题】Kmeams算法流程以及Kmeans++介绍
  9. 跨境电商系统的一个架构演进
  10. SCSI设备IO过程:磁盘上线与IO过程
  11. 博途PLC 1200/1500PID PID_Temp 加热制冷双输出+级联控制(串级控制)
  12. 苹果电脑上四款好用的可以记事的日历软件
  13. 那么如何求出这个长轴和短轴呢?于是线性代数就来了
  14. 强大的web打印插件--Lodop
  15. Oracle 18c:拉里·埃里森亲自支招,数据库自动化之后,DBA何去何从?
  16. 手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播
  17. # #define 以及 # ##解释
  18. Oracle 10g的闪回机制
  19. windows XP无法使用suspend to RAM (s3)功能的解决过程
  20. Nature 重大发现:癌基因竟不在染色体上?第一作者吴思涵亲身解读!

热门文章

  1. 目前以太网主要采用什么连接计算机,目前以太网主要采用______连接计算机,计算机能够独享带宽...
  2. html中diy的背景怎么透明,自制复古几何无缝纹案背景_html/css_WEB-ITnose
  3. 还在调API写所谓的AI“女友”,唠了唠了,教你基于python咱们“new”一个(深度学习)
  4. [漏洞分析] CVE-2022-0995 watch_queue 1bit “溢出“内核提权
  5. 争议不断的AI绘画,如今成为了顶流?
  6. 巴西柔术第三课:封闭式防守的降服技术
  7. 边坡裂缝拉绳位移计的原理及怎样进行长期健康监测
  8. 再厚的马赛克都能被扒干净?这款去码神器火了
  9. hacking8信息流邀请码第二关 代码详解
  10. 最近两周出去面试遇到的面试题(前端初级、长更)