深入学习SpringMVC框架

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

一.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都去初始化一道。



  • The best investment is in yourself
    在这里插入图片描述
  • 2020.03.28 记录辰兮的第39篇博客
发布了43 篇原创文章 · 获赞 200 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_45393094/article/details/104843140