SpringMVC

一、结构与流程 

1.1、简介

Web 模块 

Web 模块:提供了基本的 Web 开发集成特性,例如多文件上传功能、使用的 Servlet 监听器的 IOC 容器初始化以及 Web 应用上下文。
Servlet 模块:提供了一个 Spring MVC Web 框架实现。Spring MVC 框架提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的 JSP 标签,无缝与 Spring 其他技术协作。
WebSocket 模块:提供了简单的接口,用户只要实现响应的接口就可以快速的搭建 WebSocket Server,实现双向通讯。
Portlet 模块:提供了在 Portlet 环境中使用 MVC 实现,类似 Web-Servlet 模块的功能。

SpringMVC 执行流程 

1.用户发起一个 HTTP request 请求,提交到 DispatcherServlet(前端控制器);
2.DispatcherServlet 请求一个或多个 HandlerMapping(处理器映射器),并返回一个执行链(HandlerExecutionChain)。
3.DispatcherServlet 将执行链返回的 Handler 信息发送给 HandlerAdapter(处理器适配器);
4.HandlerAdapter 根据 Handler 信息找到并执行相应的 Handler(Controller);
5.Handler 执行完毕后会返回给 HandlerAdapter 一个 ModelAndView 对象(Spring MVC的底层对象,包括 Model 数据模型和 View 视图信息);
6.HandlerAdapter 接收到 ModelAndView 对象后,将其返回给 DispatcherServlet;
7.DispatcherServlet 接收到 ModelAndView 对象后,会请求 ViewResolver(视图解析器)对视图进行解析;
8.ViewResolver 根据 View 信息匹配到相应的视图结果,并返回给 DispatcherServlet;
9.DispatcherServlet 接收到具体的 View 视图后,进行视图渲染,将 Model 中的模型数据填充到 View 视图中的 request 域,生成最终的 View(视图);
10.View 视图负责将结果显示到浏览器(客户端)。

SpringMVC_第1张图片

1.2、组成结构及作用 

1.2.1、DispatcherServlet 

前端控制器,本质上是个Servlet,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。
Servlet 工作流程 
    1.Web Client 向Servlet容器(Tomcat)发出Http请求。
    2.Servlet容器接收Web Client的请求。
    3.Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
    4.Servlet容器创建一个HttpResponse对象。
    5.Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
    6.HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
    7.HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
    8.Servlet容器把HttpServlet的响应结果传给Web Client。

Servlet 作用域 

SpringMVC_第2张图片

拦截器 与 过滤器 

SpringMVC_第3张图片

1.2.2、HandlerMapping 

​处理器映射器,根据请求的 URL 路径,通过注解或 XML 配置,寻找匹配的处理器(Handler)。
作用:根据请求的url查找Handler
servlet初始化时,会对 HandlerMappings、HandlerAdapters等做初始化。
HandlerMapping 初始化时,将映射与 handler(Controller中配置@RequestMapping注解的方法)存到 map 里;处理请求时,从map里取出对应的处理handler。

1.2.3、HandlerAdapter 

处理器适配器,根据映射器找到的处理器(Handler),按特定规则执行相关的处理器(Handler)。
作用:按照特定规则(HandlerAdapter要求的规则)执行Handler。

1.2.4、Handler 

处理器(Controller),执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。
注意:写Handler时按 HandlerAdapter 的要求,适配器才能正确执行Handler。

1.2.5、View Resolver 

视图解析器,通过 ModelAndView 中的 View 将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。
作用:进行视图解析,根逻辑视图名解析成真正的视图(view)。

1.2.6.View 

​视图,本身是接口,支持不同的 View 类型(jsp、freemarker、thymeleaf、pdf...)。

你可能感兴趣的:(java,开发语言)