zoukankan      html  css  js  c++  java
  • SpringMVC的底层实现

    SpringMVC的底层实现流程:

    SpringMVC的核心是DispatchServlet,它负责接收HTTP的请求和协调SpringMVC中各个组件来完成请求处理的任务,一个请求被截获后,DispatchServlet会通过HanderMapping(处理映射器)去定位到特定的Controller(也可叫hander),然后通过HanderAdapter(处理调配器)去调用hander中的业务处理方法, 业务处理方法返回一个ModelAndView(模型数据与逻辑视图),交给DisparthServlet,DispatchServlet调用ViewResolver(视图解析器)解析出真实的视图对象,得到这个视图对象后,DispartServlet使用Model对其进行渲染,最终把结果返回给用户。

    在这个渲染的过程中,发挥作用的就是ViewResolver和View。当Handler返回的 ModelAndView中不包含真正的视图,只返回一个逻辑视图名称的时候,ViewResolver就会把该逻 辑视图名称解析为真正的视图View对象。View是真正进行视图渲染,把结果返回给浏览器的。

    SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用 是把一个逻辑上的视图名称解析为一个真正的视图,SpringMVC中用于把View对象呈现给客户端的 是View对象本身,而ViewResolver只是把逻辑视图名称解析为对象的View对象。View接口的主要 作用是用于处理视图,然后返回给客户端。(在dispatchServlet的doservice方法中调用了私有方法processDispatchResult, 该私有方法中调用了render(mv, request, response) ,此处的mv为controller层返回的ModelAndView类的一个实例,在该render方法中有一行view.render(mv.getModelInternal(), request, response);,即在该方法中会实现写入response中)。

  • 相关阅读:
    Object-C,NSArraySortTest,数组排序3种方式
    Object-C,NSArraySortTest,数组排序3种方式
    Object-C,数组NSArray
    Object-C,数组NSArray
    Zookeeper入门-Linux环境下异常ConnectionLossException解决
    Zookeeper入门-Linux环境下异常ConnectionLossException解决
    POJ 2533 Longest Ordered Subsequence
    HDU 1087 Super Jumping! Jumping! Jumping!
    ZJU 2676 Network Wars
    ZJU 2671 Cryptography
  • 原文地址:https://www.cnblogs.com/conswin/p/6783525.html
Copyright © 2011-2022 走看看