spring mvc中的@RequestBody與@ResponseBody的用法
@RequestBody 將HTTP請求正文轉換爲適合的HttpMessageConverter對象。
@ResponseBody 將內容或對象作爲 HTTP 響應正文返回,並調用適合HttpMessageConverter的Adapter轉換對象,寫入輸出流。
HttpMessageConverter接口,需要開啓。
AnnotationMethodHandlerAdapter將會初始化7個轉換器,可以通過調用AnnotationMethodHandlerAdapter的getMessageConverts()方法來獲取轉換器的一個集合 List
ByteArrayHttpMessageConverter
StringHttpMessageConverter
ResourceHttpMessageConverter
SourceHttpMessageConverter
XmlAwareFormHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
MappingJacksonHttpMessageConverter
可以理解爲,只要有對應協議的解析器,你就可以通過幾行配置,幾個註解完成協議——對象的轉換工作!
PS:Spring默認的json協議解析由Jackson完成。
正是因爲@ResponseBody註解的使用,會導致註解的產生的數據亂碼, spring mvc默認使用的是ISO-8859-1,如果使用了UTF-8編碼會導致結果亂碼,需要做如下修改配置:
<mvc:annotation-driven>
<!-- spring mvc默認輸出utf-8展示 -->
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>text/xml;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>