springMVC笔记

来源:互联网 发布:重庆移动 大数据 星座 编辑:程序博客网 时间:2024/04/29 06:44

SpringMVC接口解释

  • DispatcherServlet接口:
    • Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
  • HandlerMapping接口:(处理器映射器)
    • 能够完成客户请求到Controller映射。
  • Controller接口:
    • 需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。
    • Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
  • ViewResolver接口:
    • Spring提供的视图解析器(ViewResolver)在Web应用中查找View对象,从而将相应结果渲染给客户。

SpringMVC运行原理:

  • 1.客户端请求提交到DispatcherServlet
  • 2.由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  • 3.DispatcherServlet将请求提交到Controller
  • 4.Controller调用业务逻辑处理后,返回ModelAndView
  • 5.DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图视图负责将结果显示到客户端

  • DispatcherServlet是整个Spring MVC的核心。
  • 它负责接收HTTP请求组织协调Spring MVC的各个组成部分。其主要工作有以下三项:
    - 1.截获符合特定格式的URL请求。
    - 2.初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久化层的WebApplicationContext建立关联。
    - 3.初始化Spring MVC的各个组成组件,并装配到DispatcherServlet中。
    看到这个图大家可能会有很多的疑惑,现在我们来看一下这个图的步骤:(可以对比MVC的原理图进行理解)
    这里写图片描述

    • 第一步:用户发起请求到前端控制器(DispatcherServlet)

    • 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找

    • 第三步:找到以后处理器映射器(HandlerMappering)像前端控制器返回执行链(HandlerExecutionChain)

    • 第四步:前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)

    • 第五步:处理器适配器去执行Handler

    • 第六步:Handler执行完给处理器适配器返回ModelAndView

    • 第七步:处理器适配器向前端控制器返回ModelAndView

    • 第八步:前端控制器请求视图解析器(ViewResolver)去进行视图解析

    • 第九步:视图解析器像前端控制器返回View

    • 第十步:前端控制器对视图进行渲染

    • 第十一步:前端控制器向用户响应结果

  • 看到这些步骤我相信大家很感觉非常的乱,这是正常的,但是这里主要是要大家理解springMVC中的几个组件:

    • 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CPU。

    • 处理器映射器(HandlerMapping):根据URL去查找处理器

    • 处理器(Handler):(需要程序员去写代码处理逻辑的)

    • 处理器适配器(HandlerAdapter):会把处理器包装成适配器,这样就可以支持多种类型的处理器,类比笔记本的适配器(适配器模式的应用)

    • 视图解析器(ViewResovler):进行视图解析,多返回的字符串,进行处理,可以解析成对应的页面

MVC:

  • Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
  • B/S系统下,模型层不能将数据直接给视图层(通过resuest方式)。
    • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
      • 通常模型对象负责在数据库中存取数据。模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务
    • View(视图)是应用程序中处理数据显示的部分。
      • 通常视图是依据模型数据创建的。一般就是我们见到的用户界面
    • Controller(控制器)是应用程序中处理用户交互的部分。
      • 通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 也就是说控制器做了个调度员的工作。
2 0