SpringMVC03:什么是SpringMVC

什么是SpringMVC

1、概述

SpringMVC03:什么是SpringMVC

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

查看官方文档:https://docs.spring.io/spring-framework/docs

我们为什么要学习SpringMVC呢?

Spring MVC的特点:

  1. 轻量级,简单易学
  2. 高效,基于请求响应的MVC框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等
  6. 简洁灵活

Spring的web框架围绕DispatcherServlet[调度Servlet]设计。

DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁。

正因为SpringMVC好,简单、便捷、易学,天生与Spring无缝结合(使用SpringIoC和Aop),使用约定优于配置。能够进行简单的junit测试。支持Restful风格。异常处理,本地化,国际化,数据验证,类型转换,拦截器 等等......所以我们要学习。

最重要的一点还是用的人多,使用的公司多。

2、中心控制器

​ Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或以上版本的用户可以采用基于注解的controller声明方式。

​ Spring MVC框架像许多其它MVC框架一样,以请求为驱动,围绕一个中心Servlet分派请求及提供其它功能,DispatcherServlet是一个实际的Servlet(它继承自HttpServlet基类)

SpringMVC03:什么是SpringMVC

SpringMVC的原理如下图所示:

前端控制器:DispatcherServlet

页面控制器:Controller接口实现类,或注释@Controller的类

SpringMVC03:什么是SpringMVC

3、SpringMVC执行原理

SpringMVC03:什么是SpringMVC

图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

简要分析执行流程

  1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。

    我们假设请求的url为:http://loaclhost:8080/SpringMVC/hello

    如上url拆分成三部分:

    http://localhost:8080服务器域名

    SpringMVC部署在服务器上的web站点

    hello表示控制器

  2. HandlerMapping为处理器映射器(两种类型、三种实现)。根据url的/hello去寻找具体的handler(handler就是Controller对象)。

    两种类型:

    org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
    rg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
    

    三种实现:

    • 实现Controller接口
    • 实现HttpRequestHandler接口
    • @Controller注解
  3. HandlerExecution(JDK1.8是HandlerExecutionChain)表示具体的handler

  4. 把handler返回给DispatcherServlet

  5. HandlerAdapter(接口)表示处理器适配器,根据handler找到具体的HandlerAdapter的实现类

  6. 用HandlerAdapter去执行Controller中的方法

  7. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

  8. HandlerAdapter将ModelAndView传递给DispatcherServlet。

  9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的ModelAndView。

  10. 视图解析器将解析后的ModelAndView传给DispatcherServlet。

  11. spatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

  12. 最终视图呈现给用户。

上一篇:window10 官方快捷键 Keyboard shortcuts in Windows


下一篇:Spring web 程序启动流程简单梳理