`
json20080301
  • 浏览: 165801 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

SPRING MVC3.2案例讲解--使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

 
阅读更多

http://www.oschina.net/question/129540_25218

 

HttpMessageConverter(org.springframework.http.converter.HttpMessageConverter接口) 示例 :

 

StringHttpMessageConverter 从请求和响应读取/编写字符串。默认情况下,它支持媒体类型 text/* 并使用文本/无格式内容类型编写。 


FormHttpMessageConverter 从请求和响应读取/编写表单数据。默认情况下,它读取媒体类型 application/x-www-form-urlencoded 并将数据写入 MultiValueMap<String,String>。 


MarshallingHttpMessageConverter 使用 Spring 的 marshaller/un-marshaller 读取/编写 XML 数据。它转换媒体类型为 application/xml 的数据。 


MappingJacksonHttpMessageConverter 使用 Jackson 的 ObjectMapper 读取/编写 JSON 数据。它转换媒体类型为 application/json 的数据。 


AtomFeedHttpMessageConverter 使用 ROME 的 Feed API 读取/编写 ATOM 源。它转换媒体类型为 application/atom+xml 的数据。 

 

RssChannelHttpMessageConverter 使用 ROME 的 feed API 读取/编写 RSS 源。它转换媒体类型为 application/rss+xml 的数据。 

 

SourceHttpMessageConverter  处理请求类型 Request type: text/xml, application/xml

从HTTP request和response读写javax.xml.transform.Source .支持 DOMSource, SAXSource,StreamSource .

BufferedImageHttpMessageConverter  处理请求类型 Request type:支持Java I/O API,

 

从HTTP request和response中读写java.awt.image.BufferedImage 

 

以上是IBM开源资源库中的一篇文章,我在这篇文章的基础上,结合springmvc-showcase总结更详细更通俗的讲解!!

 

 

首先进行准备工作:

  1. <mvc:annotation-driven/> 该片段默认就加载了HttpMessageConverter接口的7种实现(如:StringHttpMessageConverter,MappingJacksonHttpMessageConverter 等)
  2. 进行请求提交时,需要指定MediaType,不同的MediaType对应的是不同的HttpMessageConverter接口实现类;见MappingJackson2HttpMessageConverter类只接受application/json类型的请求;
public class MappingJackson2HttpMessageConverter extends
		AbstractHttpMessageConverter implements GenericHttpMessageConverter {

	public MappingJackson2HttpMessageConverter() {
		
		super(new MediaType[] {
				new MediaType("application", "json", DEFAULT_CHARSET),
				new MediaType("application", "*+json", DEFAULT_CHARSET) });
		System.out.println("dsfsfsf");
		objectMapper = new ObjectMapper();
		prefixJson = false;
	}

。。。。
}

 

   如果进行请求提交和设置mediaType呢?见JS代码:设置AJAX提交的contentType属性即可;同时另外一点要注意:JSON字符串中的KEY,VALUE必须使用双引号,不可以使用单引号;

$.ajax({
				type : "POST",///springmvc2/page1.mvc
				url : "/springmvc2/json.mvc",//http://127.0.0.1:7001/springmvc2/json.mvc
				contentType : "application/json",
				data: '{"name":"1212","pwd":"我们"}' ,
				dataType:'json',
				success: function(msg){
				     alert( "Data Saved: " +msg.name   );
				   }
			});


	$("form.readJsonForm").submit(function() {
		var form = $(this);
		var button = form.children(":first");
		var data = form.hasClass("invalid") ?
				"{ \"foo\": \"bar\" }" : 
				"{ \"foo\": \"bar\", \"fruit\": \"apple\" }";
		$.ajax({ type: "POST", url: form.attr("action"), data: data, contentType: "application/json", dataType: "text", success: function(text) { MvcUtil.showSuccessResponse(text, button); }, error: function(xhr) { MvcUtil.showErrorResponse(xhr.responseText, button); }});
		return false;
	});

 

这些提交的信息如何能够查看呢?使用chrome内核的浏览器的开发者工具:



 

最后我们如何来控制我们的数据返回格式呢?

http://127.0.0.1:8010/messageconverters/json 它返回的XML格式的内容,其实是MarshallingHttpMessageConverter 转化后的结果,那我们如何指定转化的数据类型的(JSON OR XML)

 



 

 

http://127.0.0.1:8010/messageconverters/json.JSON;使用后缀指出他的返回数据格式



 

 

http://127.0.0.1:8010/messageconverters/json 在requestHeader设置

Accept:
application/json

 JS代码如下:

$("a.writeJsonLink").click(function() {
		var link = $(this);
		$.ajax({ url: this.href,
			beforeSend: function(req) {
				if (!this.url.match(/\.json$/)) {
					req.setRequestHeader("Accept", "application/json");
				}
			},
			success: function(json) {
				MvcUtil.showSuccessResponse(JSON.stringify(json), link);
			},
			error: function(xhr) {
				MvcUtil.showErrorResponse(xhr.responseText, link);
			}});
		return false;
	});

 

 

 

本文中讲解了MappingJackson2HttpMessageConverter的使用,其他的 HttpMessageConverter都是类似的用法,具体可以看实例。另外官方的案例中的POM缺少相关的依赖内容,请下载我上传的压缩包,里面的JAR依赖是完整的。

 

总结本文内容如下:

1.如何使用HttpMessageConverter进行请求数据的转化

2.如何使用HttpMessageConverter转化输出数据的格式

3.如何使用开发工具进行相关属性的查看

 

  • 大小: 129.1 KB
  • 大小: 73.2 KB
  • 大小: 68.2 KB
  • 大小: 80 KB
0
1
分享到:
评论
3 楼 json20080301 2014-04-10  
呵呵。之前网上发现的,然后自己通过这个案例学习了一下
2 楼 paladin1988 2014-04-08  
更新一下,
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>

不然会提示missing artifact
1 楼 paladin1988 2014-04-08  
帖子很好,非常感谢。。

相关推荐

    spring-boot-web-restfulcrud代码示例

    在“spring-boot-web-restfulcrud”这个项目中,我们关注的是如何使用 Spring Boot 构建一个基于 Web 的 RESTful CRUD(创建、读取、更新和删除)应用。RESTful 风格是一种软件架构风格,用于设计网络应用程序,通过...

    使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务

    在开发 RESTful Web 服务时,Spring MVC 的 HttpMessageConverter 是一个至关重要的组件。这个功能允许我们将 Java 对象转换为 HTTP 响应消息,并将 HTTP 请求消息解析为 Java 对象。本文将深入探讨如何利用 Spring ...

    spring.jar spring-webmvc-struts.jar spring-webmvc.jar

    标题中的"spring.jar"、"spring-webmvc-struts.jar"和"spring-webmvc.jar"都是Spring框架相关的Java库文件,通常以.jar结尾的文件是Java的归档文件,包含了类、资源和元数据,用于Java应用程序的运行。这些文件在...

    spring-boot-starter-web.jar

    使用SpringMVC构建web(包括RESTful)应用程序的初学者。使用Tomcat作为默认嵌入式容器 Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,其本身就是 Spring 框架的一部分,可以与 Spring ...

    spring mvc 3.2 rest配置 文件

    Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序。在Spring MVC 3.2中,引入了对RESTful服务的良好支持,使得开发基于HTTP的、无状态的服务变得更加简单。REST(Representational State Transfer)是一...

    the-mvc-spring-and-web-study.rar_Java spring mvc_The Web_mvc_spr

    标题 "the-mvc-spring-and-web-study.rar" 暗示了这是一个关于Spring MVC与Web开发相结合的学习资源,特别是针对Java平台。Spring MVC是Spring框架的一个重要组件,用于构建可伸缩、高性能的Web应用程序。它采用了...

    translation-spring-mvc-4-documentation, Spring MVC 4.2.4 RELEASE 中文文档完整翻译稿.zip

    Spring MVC是Spring框架的一个核心模块,专为构建Web应用程序而设计。这个压缩包"translation-spring-mvc-4-documentation, Spring MVC 4.2.4 RELEASE 中文文档完整翻译稿.zip"包含了Spring MVC 4.2.4版本的官方文档...

    外文翻译Spring的MVC构架模式-CSDN下载

    Spring MVC是Spring框架中的一个核心组件,主要用于构建Web应用程序的模型-视图-控制器(Model-View-Controller)架构。它为开发者提供了灵活且强大的工具来处理HTTP请求、数据绑定、验证和视图渲染。本文将深入探讨...

    【免费】Springmvc3.2所需要的全部jar包

    Spring MVC是Spring框架的一个核心...总之,这个压缩包包含了构建基于Spring MVC 3.2应用程序所需的所有核心库,使得开发者能够快速启动并运行一个功能完备的Web应用,同时享受到Spring框架带来的灵活性和可扩展性。

    spring mvc 3.2 参考文档

    Spring MVC 是一个强大的Java web开发框架,主要用于构建模型-视图-控制器(MVC)架构的应用程序。在Spring 3.2版本中,它提供了一系列高级特性和功能,旨在简化开发流程并提高代码的可维护性和灵活性。 核心组件是...

    spring mvc restful service

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,特别是对于基于模型-视图-控制器(MVC...通过这种方式,你可以更好地理解如何结合Spring MVC、RESTful设计原则以及Maven构建工具来开发高效、可维护的Web服务。

    Spring-MVC-step-by-step.zip_Java MVC spring_Java spring mvc_sp

    本教程旨在帮助初学者逐步理解并掌握Spring MVC的使用,构建自己的Web应用程序。 一、Spring MVC概述 Spring MVC是Spring框架的一个模块,主要用于构建模型-视图-控制器(MVC)架构的Web应用。它提供了处理HTTP请求...

    Spring MVC--------我在创智软件的面试

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建MVC(Model-View-Controller)架构的Web应用程序提供了强大的支持。在面试中,深入理解Spring MVC可以帮助你展示对Web开发的深入理解和技术实力。 1. **...

    springmvc3.2

    3. **RESTful风格的支持**:Spring MVC 3.2进一步增强了对RESTful API的支持,通过`@RequestMapping`的HTTP方法(GET、POST、PUT、DELETE等)和`@ResponseBody`注解,可以方便地构建无状态、资源导向的Web服务。...

    使用-Spring-3-来创建-RESTful-Web-Services

    使用 Spring 3 创建 RESTful Web Services 可以轻松地构建 RESTful Web Services,同时也提供了许多实用的特性和工具,可以帮助您快速构建自己的 RESTful Web Services 应用。 在本文中,我们介绍了使用 Spring 3 ...

    Spring MVC – Easy REST-Based JSON Services with @ResponseBody

    标题中的“Spring MVC – Easy REST-Based JSON Services with @ResponseBody”是指使用Spring MVC框架构建基于REST的JSON服务,并通过使用`@ResponseBody`注解来简化这一过程。REST(Representational State ...

    SPRING-MVC-MQ-CXF-REST_Demo

    3. CXF Web服务:包括服务接口定义、实现类和部署配置,演示了如何创建和调用SOAP或RESTful Web服务。 4. REST接口:通过@RestController注解的控制器,提供HTTP接口供客户端使用,通常返回JSON数据。 这个项目对于...

    spring-mvc-showcase-case1-client

    《Spring MVC 框架与 AngularJS 及 RequireJS 整合案例分析》 在现代Web开发中,Spring MVC作为Java后端的主要框架之一,AngularJS作为前端的MVC框架,RequireJS则作为模块化加载工具,三者结合能够构建出高效、可...

    Spring3.2处理板-Eclipse(mars)4.5 JAVA7

    3. 强大的MVC框架:Spring MVC 3.2增强了对RESTful风格的支持,以及对静态资源处理和模板引擎的改进,提升了Web应用的开发体验。 4. 配置简化:通过Java配置和@Configuration注解,可以更加直观地定义bean及其依赖...

Global site tag (gtag.js) - Google Analytics