springmvc组件介绍

01 DispatcherServlet

springmvc请求处理器,所有的springmvc请求都会先被这个servlet接受,根据@RequestMapping配置的url映射找到具体的handlerMapping、handlerAdapter组件进行请求参数解析、业务方法处理、响应参数解析,最后通过视图解析器生成视图渲染视图。

02 Controller

ServletForwardingController 可以支持servlet转发的控制器

ParameterizableViewController 可以返回配置属性视图解析的控制器

UrlFilenameViewController 将虚拟的url转换成视图的控制器,可以添加视图的前缀和后缀

ServletWrappingController 包装了内部管理servlet实例的控制器

03 HandlerMapping

用来根据url映射匹配到具体的业务handler来出来业务请求,不管是基本简单的url映射SimpleUrlHandlerMapping,还是基于beanName的url映射BeanNameUrlHandlerMapping,还是基于@requestMapping注解的url映射,DefaultAnnotationHandlerMapping、RequestMappingHandlerMapping

04 HttpRequestHandler

ResourceHttpRequestHandler 直接请求资源的

DefaultServletHttpRequestHandler 默认servlet请求,直接执行转发操作

WebSocketHttpRequestHandler websocket支持

SockJsHttpRequestHandler socketJs支持

HessianServiceExporter hessian代理支持

05 HandlerMethodReturnValueHandler

以处理从处理程序方法的调用返回的值

ViewNameMethodReturnValueHandler 处理类型void的返回值,并将其解释为视图名称引用的字符串

ViewMethodReturnValueHandler 处理视图类型的返回值

StreamingResponseBodyReturnValueHandler 支持StreamingResponseBody的返回值

HttpHeadersReturnValueHandler 支持httpHeaders的返回值

ModelAndViewMethodReturnValueHandler 处理ModelAndView类型的返回值,将视图和模型信息复制到ModelAndViewContainer

ModelAndViewResolverMethodReturnValueHandler 返回值可以用ModelAndViewResolver处理

RequestResponseBodyMethodProcessor 解析用@RequestBody注释的方法参数,并通过使用HttpMessageConverter读写请求或响应的主体来处理用@ResponseBody注释的方法的返回值

HttpEntityMethodProcessor 解析HttpEntity和RequestEntity方法参数值,并处理HttpEntity和ResponseEntity返回值

ModelMethodProcessor 解析模型参数并处理模型返回值

ServletModelAttributeMethodProcessor 一种特定于servlet的ModelAttributeMethodProcessor

ListenableFutureReturnValueHandler 支持ListenableFuture类型返回值

HandlerMethodReturnValueHandlerComposite 通过委托给已注册HandlerMethodReturnValueHandlers的列表来处理方法返回值

DeferredResultMethodReturnValueHandler 类型DeferredResult、ListenableFuture、CompletionStage和任何其他已注册适配器的异步类型的返回值的处理程序

CallableMethodReturnValueHandler 支持Callable类型的返回值

CompletionStageReturnValueHandler 支持CompletionStage类型返回值

ResponseBodyEmitterReturnValueHandler ResponseBodyEmitter类型(以及ResponseEntity<ResponseBodyEmitter>子类)的返回值的处理程序,以及具有注册适配器的任何其他异步类型的处理程序

AsyncTaskMethodReturnValueHandler 支持WebAsyncTask类型返回值

05 HandlerAdapter

用来辅助处理业务handler的适配器类,不同类型的请求参数解析、不同类型的响应参数解析、生成不同响应类型的视图,原生的servlet支持SimpleServletHandlerAdapter,springmvc封装的requestHandler适配器 HttpRequestHandlerAdapter,基于@RequestMapping注解的requestHandler适配器 AnnotationMethodHandlerAdapter、RequestMappingHandlerAdapter,基于实现Controller接口的requestHandler适配器SimpleControllerHandlerAdapter

06 HandlerMethodArgumentResolver

servlet请求响应参数解析器

PathVariableMapMethodArgumentResolver 基于@PathVariable注解

RequestHeaderMethodArgumentResolver 基于@RequestHeader注解

RequestAttributeMethodArgumentResolver 基于@RequestAttribute注解

RequestParamMethodArgumentResolver 基于@RequestParam注解

ServletCookieValueMethodArgumentResolver 基于cookie解析

SessionAttributeMethodArgumentResolver 基于@SessionAttribute注解

ExpressionValueMethodArgumentResolver 基于@Value注解

MatrixVariableMethodArgumentResolver 基于@MatrixVariable注解

ServletModelAttributeMethodProcessor 基于springmvc的model中绑定的参数解析

ServletResponseMethodArgumentResolver 基于servlet响应参数解析

RequestPartMethodArgumentResolver 基于@RequestPart注解

RequestResponseBodyMethodProcessor 基于@RequestBody、@ResponseBody注解

HttpEntityMethodProcessor 基于httpEntity和responseEntity解析

HandlerMethodArgumentResolverComposite 组合参数解析器

RedirectAttributesMethodArgumentResolver 重定向绑定参数解析器

参数解析器比较多,这里只介绍了经常使用的。

07 HandlerInterceptor

MappedInterceptor 路径匹配拦截器

AsyncHandlerInterceptor 异步请求处理拦截器

ConversionServiceExposingInterceptor 类型转换服务拦截器

WebContentInterceptor 检查请求并准备响应的处理程序拦截器

08 HttpMessageConverter

AllEncompassingFormHttpMessageConverter 支持xml和json的类型转换器

SourceHttpMessageConverter 可以读写resource的类型转换器

ResourceHttpMessageConverter 它可以读写资源并支持字节范围请求

ByteArrayHttpMessageConverter 它可以读写字节数组

AbstractJaxb2HttpMessageConverter 抽象基于JAXB2类型转换器

MarshallingHttpMessageConverter 基于marshaller的类型转换器

ObjectToStringHttpMessageConverter 使用ConversionService将字符串内容转换为目标对象类型或从目标对象类型转换为目标对象类型

AbstractJackson2HttpMessageConverter 基于Jackson和内容类型独立的HttpMessageConverter实现的抽象基类

MappingJackson2HttpMessageConverter 它可以使用Jackson 2读写JSON

MappingJackson2XmlHttpMessageConverter 它可以使用Jackson 2读写XML

GsonHttpMessageConverter 它可以使用谷歌Gson库的Gson类读写JSON

ProtobufHttpMessageConverter 支持Protobuf协议的类型转换器

StringHttpMessageConverter 可以读写字符串的HttpMessageConverter的实现

BufferedImageHttpMessageConverter HttpMessageConverter的实现,它可以读写缓冲edimages

Jaxb2CollectionHttpMessageConverter 可以使用JAXB2读取XML集合的HttpMessageConverter

09 View

视图组件

MappingJackson2JsonView 通过使用Jackson 2的ObjectMapper序列化当前请求的模型来呈现JSON内容

MappingJackson2XmlView 通过使用Jackson 2的XmlMapper序列化当前请求的模型来呈现XML内容

MarshallingView 允许响应上下文作为Marshaller编解码的结果呈现的Spring-MVC视图,将编解码的对象作为模型中的参数提供

AbstractPdfView PDF视图的抽象超类

FreeMarkerView 基于FreeMarker模板的视图

JstlView 即使用JSP标准标记库的JSP页面解析jstl属性的视图

AbstractXlsxView XLSX格式中Excel文档视图的方便超类

RedirectView 重定向到绝对URL、上下文相对URL或当前请求相对URL的视图

10 ViewResolver

视图解析器

ViewResolverComposite 组合视图解析器

XmlViewResolver 它使用专用XML文件中的bean定义作为视图定义

UrlBasedViewResolver 基于简单url的视图解析

InternalResourceViewResolver UrlBasedViewResolver的方便子类,它支持InternalResourceView(即servlet和jsp)和JstlView等子类

ContentNegotiatingViewResolver 它基于请求文件名或Accept头解析视图

BeanNameViewResolver 它在当前应用程序上下文中将视图名解释为bean名

11 ModelAndView

用于web MVC框架中的模型和视图,这个类只包含这两个属性,使控制器能够在一个返回值中同时返回模型和视图。表示处理程序返回的要由DispatcherServlet解析的模型和视图。视图可以采用字符串视图名称的形式,该名称需要由ViewResolver对象解析;或者可以直接指定视图对象。

说在最后

本次主要介绍了springmvc的几大组件及提供的默认实现, 自己也可以根据需求进行扩展

转载至链接:https://my.oschina.net/u/3775437/blog/3018617。

springMVC源码之组件介绍相关推荐

  1. SpringMVC源码分析(4)剖析DispatcherServlet重要组件

    简单介绍了一个请求的处理过程, 简略描述了调用过程,并没有涉及过多细节,如url匹配,报文解析转换等. <SpringMVC源码分析(2)DispatcherServlet的初始化>:介绍 ...

  2. 我们来了解下ModelAndViewContainer组件---------------【springmvc源码】

    接着上一篇的springmvc最简单配置的解析(4)-----------[springmvc源码],我们继续分析. 在上一篇中的render方法,其实它是最后处理请求的阶段,也就是把请求转换为视图的 ...

  3. SpringMVC源码阅读系列汇总

    1.前言 1.1 导入 SpringMVC是基于Servlet和Spring框架设计的Web框架,做JavaWeb的同学应该都知道 本文基于Spring4.3.7源码分析,(不要被图片欺骗了,手动滑稽 ...

  4. springMvc源码刨析笔记

    springMvc源码刨析笔记 MVC 全名是 Model View Controller,是 模型(model)-视图(view)-控制器(controller) 的缩写, 是⼀种⽤于设计创建 We ...

  5. 筑基期第一式:SpringMVC源码解析

    文章目录 SpringMVC源码解析 SPI机制 案例 SpringMVC中SPI的使用 初始化IOC容器与九大组件 初始化容器 初始化九大组件 小结 SpringMVC如何处理一个请求 doDisp ...

  6. Vue源码学习 - 组件化(三) 合并配置

    Vue源码学习 - 组件化(三) 合并配置 合并配置 外部调用场景 组件场景 总结 学习内容和文章内容来自 黄轶老师 黄轶老师的慕课网视频教程地址:<Vue.js2.0 源码揭秘>. 黄轶 ...

  7. springMVC源码分析--访问请求执行ServletInvocableHandlerMethod和InvocableHandlerMethod

    在之前一篇博客中 springMVC源码分析--RequestMappingHandlerAdapter(五)我们已经简单的介绍到具体请求访问的执行某个Controller中的方法是在RequestM ...

  8. Vue源码学习 - 组件化一 createComponent

    Vue源码学习 - 组件化一 createComponent 组件化 createComponent 构造子类构造函数 安装组件钩子函数 实例化 VNode 总结 学习内容和文章内容来自 黄轶老师 黄 ...

  9. SpringMVC源码分析系列[转]

    说到java的mvc框架,struts2和springmvc想必大家都知道,struts2的设计基本上完全脱离了Servlet容器,而springmvc是依托着Servlet容器元素来设计的,同时sp ...

最新文章

  1. Linux 系统审计操作行为的 5 种解决方案
  2. JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.TestBean,类中有集合类型的属性...
  3. Python学习:numpy的使用技巧和注意
  4. 女子15000元网购兰基博尼跑车,上路就被查了,这操作真没见过!
  5. python 关联分析算法的包_Python 极简关联分析(购物篮分析)
  6. 一种非常好用的图像处理软件
  7. Kakao Talk母公司第四季净利润暴跌80%
  8. rx java_你会在实际工作中使用 rxjava 吗?
  9. [BZOJ3944]Sum
  10. easyui 扩展loading
  11. API接口出来了,填写客户收货地址不用烦,自动填写不出差错
  12. 阿里云短信验证码注册
  13. 离散状态方程和连续状态方程 matlab,信号与系统实验(MATLAB 西电版)实验19 离散系统状态方程的求解.ppt...
  14. 技术牛人如何发财致富?
  15. 一、计算机核心组成及CPU核心组成
  16. P2150 [NOI2015]寿司晚宴
  17. COGS 1043. [Clover S2] Freda的迷宫
  18. 安卓禁用硬件加速_[转]Android如何关闭硬件加速
  19. Metal 框架之从可绘制纹理中读取像素数据
  20. 基于管道过滤器实现的kwic实现

热门文章

  1. FTP、FTPS frp(传送协议与内网穿透)
  2. 安全服务/渗透测试工程师_面试题之OWASP TOP 10
  3. 大数据必学Java知识(一):Java基础入门语法和安装
  4. go开发虚拟串口服务器,vspd.go
  5. 《失控》摘录与读后感
  6. 留学目的地选择之亚利桑那州
  7. 运维如何学习、自我提升价值?
  8. 深入浅出学算法007-统计求和
  9. 想学CNC编程的一定要看过来~
  10. 电脑怎么录制屏幕?分享电脑录制屏幕的3个方法