SpringMVC框架 第8章 处理JSON

8章 处理JSON

8.1 返回JSON

  1)  加入 jar 包:

http://wiki.fasterxml.com/JacksonDownload/   下载地址

jackson-annotations-2.1.5.jar

jackson-core-2.1.5.jar

jackson-databind-2.1.5.jar

  2)  编写目标方法,使其返回 JSON 对应的对象或集合  3)  增加页面代码:jsp

  4)  测试

8.2 HttpMessageConverter原理

8.2.1 HttpMessageConverter<T>

  1)  HttpMessageConverter<T>是0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息

  2)  HttpMessageConverter<T>接口定义的方法:

  • Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)
  • Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对象写到响应流中,响应流支持的媒体类型在MediaType 中定义。
  • List<MediaType> getSupportMediaTypes():该转换器支持的媒体类型。
  • T read(Class<? extends T> clazz,HttpInputMessageinputMessage):将请求信息流转换为 T 类型的对象。
  • void write(T t,MediaType contnetType,HttpOutputMessgaeoutputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为 contentType。

 

  3)  DispatcherServlet 默认装配 RequestMappingHandlerAdapter ,

而 RequestMappingHandlerAdapter 默认装配如下 HttpMessageConverter:

 

  4)  加入 jackson jar 包后, RequestMappingHandlerAdapter  

装配的 HttpMessageConverter  如下:

默认情况下数组长度是6个;增加了jackson的包,后多个一个

MappingJackson2HttpMessageConverter