四时宝库

程序员的知识宝库

SpringMVC总结三:HttpMessageConverter 消息转换器

HttpMessageConverter 接口作用:

1)实现请求的数据转为java对象;

2) 把控制器方法返回的对象转为json,xml,text,二进制等不同格式的数据。

public interface HttpMessageConverter<T> {

   /**
      作用: 检查clazz这个类型的对象,能否转为 mediaType表示的数据格式
            如果能转为mediaType表示的类型, 返回true, 返回true调用read()
    */
   boolean canRead(Class<?> clazz, @Nullable MediaType mediaType);
   /**
      作用: 接收请求中的数据,把数据转为 clazz表示的对象
    */
   T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
         throws IOException, HttpMessageNotReadableException;
    
    
    
   /**
      作用:检查clazz这种数据类型,能否转为mediaType表示的数据格式
    */
   boolean canWrite(Class<?> clazz, @Nullable MediaType mediaType);

   /**
      作用: 把t对象,按照contentType说明的格式,把对象转为json或者xml
    */
   void write(T t, @Nullable MediaType contentType, HttpOutputMessage outputMessage)
         throws IOException, HttpMessageNotWritableException;

}

MediaType:媒体类型,表示互联网中数据的格式。例如application/json, text/html, image/gif

HttpMessageConverter 接口的实现类:

MappingJackson2HttpMessageConverter : 用jackson工具库的ObjectMapper把java对象转为json数据格式

StringHttpMessageConverter : 把字符串类型的数据,进行格式转换和编码

怎么使用实现类:

框架根据控制器方法的返回类型, 自动查找使用的实现类。

@RequestMapping("/receive-object.do")
public Student doReceiveObject(String name,Integer age){
    System.out.println("MyController的方法doReceiveObject=");
    Student student = new Student();
    student.setName("lisi");
    student.setAge(20);
    return student;
}

默认情况下: springmvc使用了HttpMessageConveter接口的4个实现类。包括了StringHttpMessageConverter.

需要在springmvc的配置文件,加入注解驱动的标签 mvc:annotation-driven. 加入这个标签后, springmvc项目启动后,会创建HttpMessageConveter接口的7个实现类对象,包括StringHttpMessageConverter 和 MappingJackson2HttpMessageConverter。


2、@ResponseBody

@ResponseBody注解的作用,就是把student转换后的json通过HttpServletResponse对象输出给浏览器。

//输出json,响应ajax
response.setContentType("application/json;charset=utf-8");
PrintWriter pw  = response.getWriter();
pw.println(json);
pw.flush();
pw.close();

@ResponseBody注解作用就上面的代码的实现

2.1 控制器方法返回对象转为json的步骤

1)pom.xml加入jackson依赖,springmvc框架,默认处理json就是使用jackson

2)在springmvc的配置文件中,加入注解驱动的标签mvc:annotation-dirven

  1. 在控制器方法的上面加入@ResponseBody注解,表示返回值数据,输出到浏览器。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接