SpringMVC-11 处理json

来源:互联网 发布:淘大象软件下载 编辑:程序博客网 时间:2024/06/14 07:52

一、处理json步骤

二、原理HttpMessageConverter<T>

1、HttpMessageConverter<T> 是Spring3.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,HttpInputMessage inputMessage):将请求信息流转换为T 类型的对象。

– void write(T t,MediaType contnetType,HttpOutputMessgaeoutputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为contentType。

3、处理流程


4、HttpMessageConverter<T> 的实现类



5、DispatcherServlet 默认装配RequestMappingHandlerAdapter ,而RequestMappingHandlerAdapter 默认装配HttpMessageConverter:

6、使用HttpMessageConverter<T>

使用HttpMessageConverter<T> 将请求信息转化并绑定到处理方法的入参中或将响应结果转为对应类型的响应信息,Spring 提供了两种途径:

– 使用@RequestBody / @ResponseBody 对处理方法进行标注

– 使用HttpEntity<T> / ResponseEntity<T> 作为处理方法的入参或返回值

• 当控制器处理方法使用到@RequestBody/@ResponseBody 或HttpEntity<T>/ResponseEntity<T> 时, Spring 首先根据请求头或响应头的Accept 属性选择匹配的HttpMessageConverter, 进而根据参数类型或泛型类型的过滤得到匹配的HttpMessageConverter, 若找不到可用的HttpMessageConverter 将报错

• @RequestBody 和@ResponseBody 不需要成对出现


0 0
原创粉丝点击