zoukankan      html  css  js  c++  java
  • 【SpringMVC】处理 JSON:使用 HttpMessageConverter

    处理 JSON:使用 HttpMessageConverter

    处理 JSON

    1. 加入 jar 包:
    2. 编写目标方法,使其返回 JSON 对应的对象或集合
    3. 在方法上添加 @ResponseBody 注解
      java @ResponseBody @RequestMapping("/getUsers") public List<User> testAjax() { List<User> users = new ArrayList<>(); users.add(new User(1,"a",new Date(),1000)); users.add(new User(2,"b",new Date(),2000)); return users; }

    HttpMessageConverter

    • HttpMessageConverter 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息
    • HttpMessageConverter接口定义的方法:
      • Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)
      • Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将 clazz 类型的对象写到响应流中,响应流支持的媒体类型 在MediaType 中定义。
      • List getSupportMediaTypes():该转换器支持的媒体类型。
      • T read(Class<? extends T> clazz,HttpInputMessage inputMessage):将请求信息流转换为 T 类型的对象。
      • void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类 型为 contentType。

    HttpMessageConverter 的实现类

    • DispatcherServlet 默认装配 RequestMappingHandlerAdapter,而 RequestMappingHandlerAdapter 默认装配如下 HttpMessageConverter:

    • 加入 jackson jar 包后,RequestMappingHandlerAdapter 装配的 HttpMessageConverter 如下:

    使用 HttpMessageConverter

    • 使用 HttpMessageConverter 将请求信息转化并绑定到处理方法的入参中或将响应结果转为对应类型的响应信息,Spring 提供了两种途径:
      • 使用 @RequestBody / @ResponseBody 对处理方法进行标注
      • 使用 HttpEntity / ResponseEntity 作为处理方法的入参或返回值
    • 当控制器处理方法使用到 @RequestBody/@ResponseBody 或 HttpEntity/ResponseEntity 时, Spring 首先根据请求头或响应头的 Accept 属性选择匹配的 HttpMessageConverter,进而根据参数类型或泛型类型的过滤得到匹配的 HttpMessageConverter, 若找不到可用的 HttpMessageConverter 将报错
    • @RequestBody 和 @ResponseBody 不需要成对出现

    @RequestBody、@ResponseBody 示例


  • 相关阅读:
    Silverlight 5 开发者的声音
    Android之Bundle传递数据详解与实例及Bundle与SharedPreferences的区别
    Android开源项目源码下载(不断更新中)
    Android 控件之WebView
    Android学习资料分享(不断更新中)
    Android控件之ZoomButton缩放按钮
    Android2.3操作系统即将发布,亮点解读
    Android控件之ZoomControls缩放控件
    Windows Phone 7 Silverlight控件之Map入门
    Android 控件之DatePicker,TimePicker,Calender
  • 原文地址:https://www.cnblogs.com/blknemo/p/13498106.html
Copyright © 2011-2022 走看看