spring机制分析(1)
来源:互联网 发布:python interfaceerror 编辑:程序博客网 时间:2024/05/21 14:00
spring 运行机制
众所周知,一个 HTTP 请求发送到 Web 容器, Web 容器就会封装一个 HTTP 请求对象 (HttpServletRequest) ,这个对象包含所有的 HTTP 请求信息,例如, HTTP 参数以及参数值, HTTP 请求头的各种元数据。同时, Web 容器会创建一个 HTTP 响应对象( HttpServletResponse ),用以发送 HTTP 响应给客户端用户。然后, Web 容器传递 HTTP 请求对象 (HttpServletRequest) 和 HTTP 响应对象( HttpServletResponse )给 Servlet 对象的 service() 方法。
实际上, Spring Web MVC 的入口就是一个客户化的 Servlet ,称为派遣器 Servlet 对象 (DispatcherServlet) 。这个派遣器Servlet 对象( DispatcherServlet )得到 HTTP 请求对象 (HttpServletRequest) 和 HTTP 响应对象( HttpServletResponse)后,一个典型的 Spring Web MVC 工作流就开始了。
派遣器 Servlet 对象( DispatcherServlet )首先查找所有注册的处理器映射器对象( HandlerMapping ),然后,遍历所有的处理器映射器对象( HandlerMapping ),直到一个处理器映射器对象( HandlerMapping )返回一个非空的处理器执行链对象 (HandlerExecutionChain) 。那么,处理器执行链对象 (HandlerExecutionChain) 就包含着一个需要处理当前HTTP 请求的一个处理器对象( Handler )。如图表 3-6 第 1 步。
这里,一个处理器对象 (Handler) 被设计成了一个通用的对象类型,所以,这里需要一个处理器适配器(HandlerAdaptor )去派遣这个控制流到一个处理器对象 (Handler) ,因为只有支持这种类型的处理器( Handler )的处理器适配器 (HandlerAdapter) 才知道如何去传递控制流给这个类型的处理器( Hanlder )。
拿到了处理器对象 (Hanlder) 以后,派遣器 Servlet 对象( DispatcherServlet )则查找所有注册的处理器适配器对象(HandlerAdapter ),然后,遍历所有的处理器适配器对象( HandlerAdapter )查询是否有一个处理器适配器对象(HandlerAdapter )支持这个处理器对象( Handler )。如图表 3-6 第 2 步。
如果有这样的一个处理器适配器对象 (HandlerAdapter) ,则派遣器 Servlet 对象( DispatcherServlet )将控制权转交给这个派遣器适配器对象 (HandlerAdapter) 。如图表 3-6 第 3 步。派遣器适配器对象( HandlerAdapter )和真正的处理器对象 (Handler) 是成对出现的,所以,这个支持的处理器适配器对象( HandlerAdapter )则知道如何去使用这个处理器(Handler) 去处理这个请求。最简单的一个处理器则是控制器对象( Controller )。处理器适配器对象 (HandlerAdapter)将传递 HTTP 请求对象( HttpServletRequest )和 HTTP 响应对象( HttpServletResponse )给控制器,并且期待控制器返回模型和视图对象( ModelAndView )。如图表 3-6 第 3.1 步。这个模型和视图对象( ModelAndView )对象包含着一组模型数据和视图逻辑名称,并且最终返回给派遣器 Servlet 对象( DispatcherServlet ) .
派遣器 Servlet 对象( DispatcherServlet )然后查找所有注册的视图解析器对象,并且遍历所有的视图解析器对象(ViewResolver ),直到一个视图解析器对象( ViewResolver )返回一个物理的视图对象( View )。如图表 3-6 第 4步。
最后,派遣器 Servlet ( DispatcherServlet )把得到的一组模型数据传递给得到的物理视图对象( View )。如图表 3-6第 5 步。然后,视图对象则会使用响应的表现层技术,把模型数据展现成 UI 界面,并且通过 HTTP 响应对象(HttpServletResponse )发送给 HTTP 客户。
- spring机制分析(1)
- Spring Aop实现机制分析原理
- spring回滚机制源码分析
- eMule代码分析(1)----错误机制
- ReactOS分析windows DPC机制(1)
- Handler机制分析(1)
- Spring aop事务异常回滚(rollbackFor)机制和源码分析
- 基于Spring源码分析AOP的实现机制
- spring IOC源码分析(1)
- spring IoC源码分析(1)
- spring IOC源码分析(1)
- spring源码分析(1) 之 DispatcherServlet:
- spring IOC源码分析(1)
- Spring初始化过程源码分析(1)
- spring IOC源码分析(1)
- Spring MVC分析1
- Spring源码分析(1)
- Spring ActiveMQ 整合(二.1): 重发机制概念解释
- 深入理解android中的常用类
- ASP.NET获取客户端MAC地址
- Can not be copied
- 在一个字符串中找到第一个只出现一次的字符
- Sql Server 汉字转拼音(无数据表版)
- spring机制分析(1)
- HTTP 相应头相关
- JTree
- 团队合影
- 比较好的网
- 小圈子.大社交:利用圈子引爆流行
- JAVA中的同步和异步
- 一个理解js动态创建节点并注册事件及传递参数的例子
- 【木头Cocos2d-x 008】在Lua中使用自定义类——tolua++工具使用(下集)