美文网首页
SpringMVC基础知识

SpringMVC基础知识

作者: 剑御 | 来源:发表于2017-11-18 10:53 被阅读41次

SpringMVC基础知识

@(开源框架)

1.什么是 Spring MVC

Spring MVC 属于 SpringFrameWork 的后续产品,已经融合在 Spring Web Flow 里面,是一个强大灵活的 Web 框架。Spring MVC 提供了一个 DispatcherServlet 作为前端控制器来分配请求。通过策略接口,Spring 框架是高度可配置的。Spring MVC 还包含多种视图技术,如 Java Server Pages(JSP)、Velocity、Tiles、iText 和 POI 等。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。Spring MVC 框架主要由 DispatcherServlet、处理器映射器、处理器适配器、处理器(控制器)、视图解析器、视图组成。

2. SpringMVC基本知识:

Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。从这样一个角度来说,Spring MVC和Struts、Struts2非常类似.对于MVC的基本概念如下:

  • Model(模型):是用于处理应用程序数据逻辑的部分。

  • View(视图):是处理数据显示的部分。

  • Controller(控制器):通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

3. SpringMVC类的架构原理图

  • 架构原理概图:
image.png
  • 基于架构图的具体解释如下:
  1. 用户发送请求至前端控制器DispatcherServlet
  2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  3. DispatcherServlet将请求提交对应的Controller
  4. Controller执行完业务逻辑之后,返回ModelAndView
  5. DispatcherServlet查询一个或多个ViewReslover视图解析器,找到ModelAndView对应的视图
  6. ViewReslover解析后返回具体View
  7. DispathcerServlet对View进行渲染视图
  8. DispathcerServlet响应用户


    image.png

SpringMVC核心类解释:

DispatcherServlet

它是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处

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

  1. 文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析;
  2. 通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionChain,它包括一个处理器、多个HandlerInterceptor拦截器);
  3. 通过HandlerAdapter支持多种类型的处理器(HandlerExecutionChain中的处理器);
  4. 通过ViewResolver解析逻辑视图名到具体视图实现;
  5. 本地化解析;
  6. 渲染具体的视图等;
  7. 如果执行过程中遇到异常将交给HandlerExceptionResolver来解析。

从以上我们可以看出DispatcherServlet主要负责流程的控制(而且在流程中的每个关键点都是很容易扩展的)。

ModelAndView

ModelAndView是Http请求过程中返回的模型和视图。前端控制器返回的视图可以是视图的逻辑名,或者实现了View接口的对象。View对象能够渲染客户响应结果。其中,ModelAndView中的模型能够供渲染View时使用。借助于Map对象能够存储模型。
如果ModelAndView返回的视图只是逻辑名,则需要借助Spring提供的视图解析器(ViewResoler)在Web应用中查找View对象,从而将响应结果渲染给客户。

  • Model:其实是一个ModelMap类型。其实ModelMap是一个LinkedHashMap的子类

      image.png
  • View:包含了一些视图信息

当视图解释器解析ModelAndVIew是,其中model本生就是一个Map的实现类的子类。视图解析器将model中的每个元素都通过request.setAttribute(name, value);添加request请求域中。这样就可以在JSP页面中通过EL表达式来获取对应的值

HandlerMapping接口

能够完成客户请求到Controller映射。

Controller接口

需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。

Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。

从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。

ViewResolver接口

Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。

相关文章

网友评论

      本文标题:SpringMVC基础知识

      本文链接:https://www.haomeiwen.com/subject/frlevxtx.html