spring mvc HttpMessageConverter使用
来源:互联网 发布:澳洲留学 知乎 编辑:程序博客网 时间:2024/05/29 13:46
HTTP 请求和响应是基于文本的,意味着浏览器和服务器通过交换原始文本进行通信。但是,使用 Spring,controller 类中的方法返回纯 'String' 类型和域模型(或其他 Java 内建对象)。如何将对象序列化/反序列化为原始文本?这由
HttpMessageConverter
处理。Spring 具有捆绑实现,可满足常见需求。表 1 显示了一些示例。
表 1. HttpMessageConverter 示例
使用...... 您可以......
ObjectMapper
读取/编写 JSON 数据。它转换媒体类型为 application/json 的数据。以JSON为例,使用步骤如下:
清单 1. 配置 rest-servlet.xml 中的 HttpMessageConverter
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonConverter" /> <ref bean="marshallingConverter" /> <ref bean="atomConverter" /> </list> </property></bean><bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes" value="application/json" /></bean>
在配置中,注册了 3 个转换程序。
MappingJacksonHttpMessageConverter
用于将对象转换为 JSON,反之亦然。此内置转换程序使用 Jackson 的 ObjectMapper
将 JSON 映射到 JavaBean,因此您必须将下列 Jackson JAR 文件添加到类路径。
org.codehaus.jackson.jar
org.codehaus.jackson.mapper.jar
下一步是编写一个方法,处理请求 JSON 具象的请求。清单 2 显示了详细信息。
清单 2. 处理在 EmployeeController 中定义的 JSON 请求
@RequestMapping(method=RequestMethod.GET, value="/emp/{id}", headers="Accept=application/json")public @ResponseBody Employee getEmp(@PathVariable String id) {Employee e = employeeDS.get(Long.parseLong(id));return e;}@RequestMapping(method=RequestMethod.GET, value="/emps", headers="Accept=application/json")public @ResponseBody EmployeeListinggetAllEmp() {List<Employee> employees = employeeDS.getAll();EmployeeListinglist = new EmployeeList(employees);return list;}
@ResponseBody
注释用于将返回对象(Employee
或 EmployeeList
)变为响应的正文内容,将使用 MappingJacksonHttpMessageConverter
将其映射到 JSON。
使用
HttpMessageConverter
和 @ResponseBody
,您可以实现多个具象,而无需包含 Spring 的视图技术 — 这是使用ContentNegotiatingViewResolver
所不具有的一个优势。
现在您可以使用 CURL 或 REST Client Firefox 插件调用请求。记住添加一个 HTTP 头:
Accept=application/json
。清单 3 以 JSON 格式显示了所需的响应。
清单 3. getEmp() 和 getAllEmp() 的 JSON 结果
Response for /rest/service/emp/1{"id":1,"name":"Huang Yi Ming","email":"huangyim@cn.ibm.com"}Response for /rest/service/emps{"count":2,"employees":[{"id":1,"name":"Huang Yi Ming","email":"huangyim@cn.ibm.com"},{"id":2,"name":"Wu Dong Fei","email":"wudongf@cn.ibm.com"}]}
当然,也可以自定义转换器。自定义的话,通过继承 AbstractHttpMessageConverter类实现对应的方法。
配置自定义转换器:
<
mvc:annotation-driven
>
<
mvc:message-converters
register-defaults
=
"true"
>
<!-- 将StringHttpMessageConverter的默认编码设为UTF-8. -->
<
bean
class
=
"org.springframework.http.converter.StringHttpMessageConverter"
>
<
constructor-arg
value
=
"UTF-8"
/>
</
bean
>
<
bean
class
=
"com.*.MyselfHttpMessageConverter"
>
</
bean
>
</
mvc:message-converters
>
</
mvc:annotation-driven
>
- spring mvc HttpMessageConverter使用
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- String3 MVC-----使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- Spring MVC的自动转换功能 HttpMessageConverter
- 使用xml/json格式传输数据 spring mvc(HttpMessageConverter<T>的使用)
- spring HttpMessageConverter
- Spring MVC4.1-Spring MVC的配置(含自定义HttpMessageConverter)
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(包括使用 RestTemplate 与 REST 服务进行通信)
- Linux基础命令2
- 10点的
- Java程序员的日常—— Arrays工具类的使用
- Who Gets the Most Candies?
- MFC程序视图的显示
- spring mvc HttpMessageConverter使用
- gcc编译选项-Wl
- spring事务控制详解
- The content of elements must consist of well-formed character data or markup.
- 122425笔记
- Shader 介绍
- 利用volley进行http设置请求头(一)
- C++:用CreateDirectory创建文件目录
- 蓝桥杯 入门训练 序列求和(3)