• SpringMVC


    SpringMVC作为一种前端控制器的实现形式,

    1.dispatcherServlet

    就是它的前端控制器。浏览器端用户的请求正是通过DisPatcherServlet进行了分发 ,到达了合适的Controller,来生产所需的业务数据Model,这个Model再通过DispatcherServlet进行传递,传递给View,来完成最终页面呈现。SpringMVC对数据的业务逻辑与页面实现相分离就是通过DispatcherServlet来实现的。Controller就是调用业务逻辑生成Model的地方。

    2.HandlerAdapter,

    Handler是在DispatcherServlet内部实现的一个类,其实就是Controller的一个表现形式,在SpringMVC中并没有一个抽象类或接口叫Controller,但是有一个Annotation标签,这个标签就是为了去识别Controller而引入的,DispatcherServlet就是通过这个标签识别Controller,调用的Controller是以Handler形式出现的,HandlerAdapter是一个适配器模式,就是将各种不同类型的Handler适配成DispatcherServlet可以使用的Handler,这样DispatcherServlet就可以很轻松的调用控制器。

    Handler是调用Controller的一种中间过渡对象

    3.HandlerInterceptor(一个接口,有preHandle,postHandle,aftercompletion三个方法)

    是一个拦截器,就是在需要被拦截对象的两侧,如果配置一个实现了它的类,就可以在真正调用Controller之前和之后加一些料,以及最终这个Model发送到View,完成呈现之后,可以做很多事情。

    4.HandlerMapping

    Mapping就是前端控制器(MVC)与uController之间映射关系的一种类,HandlerMapping就是告诉DispatcherServlet,请求到了之后,由哪个Controller来响应这个请求,在HandlerMapping工作网之后,可以给DispatcherServlet一个HandlerAdapter,这个HandlerAdapter就包括了核心的内容是某个具体的Controller的实例,在一个就是这个Controller需要被包裹的HandlerIntercept它们会构成一个执行的链条往下走。

    5.HandlerExceptionChain,

    HandlerMapping返回给我们东西其实包含了HandlerAdapter和HandlerIntercept,它们之间构成一个执行链,需要先执行所有的HandlerIntercept的prehandle,然后调用某个Controller下的业务方法,然后是postHandle,最后是afterCompletion,看源码的话,会发现这里用到了Java的反射机制,

    6.ModelAndView

    SpringMVC中对Model的一种表现形式,SpringMVC中还有其它的类,叫Model,当然也可以使用Map类实现Model的功能,在Controller使用Model或者Map,DispatcherServlet类都会将它转换ModelAndView,因此将ModelAndView看做Model的一个具体表现。

    7.ViewResolver

    帮助DispatcherServlet找出那一个我们需要的视图对象,像jstl,jsp,tiles

    总的流程

    浏览器的request到达DispatcherServlet,DispatcherServlet铜锅Mapping找到Controller,通过HandlerMapping配置Annotation来实现,通过Annotatioin来告诉HandlerMapping哪个Controller是我们需要的,找到Controllerza,找到了HandlerIntercepter,把它们形成了一个Handlerexceptionchain执行链条,然后作为Handler/HandlerAdapter返回给DispatcherServlet,选Controller的目的是生成模型ModelAndView,为页面的显示提供数据,模型生成之后被返还给DispatcherServlet,然后调用视图解析器ViewResolver的方法,返回View对象,然后模型数据ModelAndView就传给view。告诉DispatcherServlet哪个视图是用来解析当前这种场景的,

  • 相关阅读:
    启动matlab时总是直接跳转到安装界面的解决方案
    毕业倒计时
    PARAMETER和ARGUMENT的区别
    在Windows上使用Ubuntu共享的打印机
    Ubuntu 16.04 + CUDA 8.0 + cuDNN v5.1 + TensorFlow(GPU support)安装配置详解
    深度学习硬件购买指南
    GeForce GTX 1080 ti安装记录
    What is a TensorFlow Session?
    来来来,干了这碗毒鸡汤……
    [译] 理解 LSTM(Long Short-Term Memory, LSTM) 网络
  • 原文地址:https://www.cnblogs.com/sjxbg/p/9431089.html
Copyright © 2020-2023  润新知