在 Spring MVC 中,可以使用 @RequestBody 和 @ResponseBody 两个注解,分别完成 请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring 3.x 中新引入的 HttpMessageConverter ,即消息转换器机制。 在 Servlet 标准中,可以用javax.servlet.ServletRequest 接口中的以下方法:
public ServletInputStream getInputStream() throws IOException;
来得到一个ServletInputStream。这个 ServletInputStream 中,可以读取到一个原始请求 报文的所有内容。
同样的,在 javax.servlet.ServletResponse 接口中,可以用以下方法:
public ServletOutputStream getOutputStream() throws IOException;
来得到一个 ServletOutputStream 。这个 ServletOutputSteam ,继承自 java 中的 OutputStream,可以让你输出 Http 的响应报文内容。 我们从流中,只能读取到原始的字符串报文,同样,我们往输出流中,也只能写原始的字符。
使用 HttpMessageConverter机制,通过HttpInputMessage 和 HttpOutputMessage 可以对原始的字符串报文进行封装。
public interface HttpMessageConverter<T> {
// 请求进来先根据MediaType判断是否可读
boolean canRead(Cl