`
angelbill3
  • 浏览: 256475 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

【学习】spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX)

 
阅读更多
本文本的框架为:SpringMVC 3.2.3 \ jackson 1.9.2

传统的返回JSON格式的AJAX,用的方法一般是:在后台先把数据(Object)封装成JSON数据,再用HttpServletResponse返回。

本示例中,SpringMVC可直接支持JSON格式数据的返回。具体如下。

1、JAR包:SPRINGMVC包需的包,另外还需JACKSON的两个包。
jackson-core-asl-1.9.2.jar
jackson-mapper-asl-1.9.2.jar

2、spring-servlet.xml中加入:
<!-- 返回JSON模版 --> 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >  
    <property name="messageConverters">  
	<list>
	     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
	</list> 
    </property>  
</bean>  

我们在SPRING的配置中加入了一个新的适配器:AnnotationMethodHandlerAdapter,通过这个适配器,我们配置了一个属性,messageConverters,其中mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。
注:我的项目中没有乱码现象,这样配即可,若有乱码现象,可以在MappingJacksonHttpMessageConverter的BEAN中配置supportedMediaTypes属性,是用于解决返回的乱码问题。

3、Controller中的使用
@Controller
public class SelectController {
	@Resource
	private TypeService typeService;

	@RequestMapping("/type")
	@ResponseBody
	public Object type(){
		List<Type> typelist = this.typeService.getTypeByParentid(Const.TYPE_DAILY);
		return typelist;
	}
}

在SpringMVC中可以在Controller的某个方法上加@ResponseBody注解,表示该方法的返回结果直接写入HTTP response body中。

------------------------------------------
遇到的问题:

用上面的controller,访问:http://localhost:8080/demo/type.htm,报406错如下:
Failed to load resource: the server responded with a status of 406 (Not Acceptable) : The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers ()

查资料表明,不是JAR的版本问题,网友解答描述:

1、spring 3.2时requestedMediaTypes却为[text/html]的情况报406错误,还有一个原因可能是由于采用的后缀有关,如果使用*.htm,*.html等,默认就会采用[text/html]编码,若改成*.json,*.shtml等就OK

2、3.2.4 也遇到这个问题。修改ajax 请求的后缀为json 或者其他就可以了。他还是会优先根据url请求的后缀决定请求类型。所以你看到的一直是[text/html]

所以,将访问路径从http://localhost:8080/demo/type.htm改为http://localhost:8080/demo/type.json即可。
(如果你只拦截htm开头的链接,可以在web.xml里新增一个url-pattern为*.json的servlet即可。)



-----------------------------------------
参考:http://digdata.me/archives/96/
分享到:
评论
3 楼 cylboke 2016-12-11  
太给力了,搞了一下午,一直换jar版本,不起作用,用楼主的方法解决了,给力!!!!  
2 楼 vivian123an 2014-10-08  
给力啊!
1 楼 h121baby 2014-03-12  
very nice 多谢楼主

相关推荐

    Spring3 MVC Ajax with JSON

    **Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...

    spring mvc json&&jackson jquery js

    1. **创建Controller**:定义Spring MVC的控制器类,使用`@RequestMapping`注解映射URL,并使用`@ResponseBody`返回JSON数据。 2. **配置Jackson**:在Spring配置文件中启用Jackson并配置其属性,如日期格式化。 3. ...

    四. Spring MVC 3 支持json及 常见错误解决

    在Spring MVC 3中,对JSON的支持是其重要的特性之一,它使得前后端数据交互更加便捷,尤其在如今的Web应用中,JSON已经成为数据传输的标准格式。本篇将深入探讨Spring MVC 3对JSON的支持以及解决常见错误的方法。 ...

    spring-mvc-jsonview源代码

    总结,Spring MVC通过其灵活的架构和丰富的功能,使得处理JSON数据和AJAX请求变得简单而高效。通过深入研究“spring-mvc-jsonview”的源代码,我们可以更好地理解和利用这些特性,提升Web应用的性能和用户体验。同时...

    spring mvc json学习

    在本文中,我们将深入探讨“Spring MVC JSON学习”这一主题,重点关注如何在Spring MVC应用中处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁性和易读性而被广泛应用。 ...

    spring3-miniweb.rar_spring json_spring3_spring3 mvc

    在Spring MVC中,JSON用于在客户端(如浏览器)和服务器之间传输数据,通常用于AJAX请求。 要在Spring 3中处理JSON,我们需要以下组件: 1. **Jackson库**:Spring 3 默认支持使用Jackson库进行JSON序列化和反序列...

    springmvc+json

    接下来,我们将深入探讨如何在Spring MVC中处理JSON数据,以及设置相关的参数。 首先,让我们了解如何在Spring MVC中配置JSON支持。这通常需要引入Jackson库,因为Spring MVC默认使用Jackson进行JSON序列化和反序列...

    ajax+json+java

    【标题】"Ajax + JSON + Java" 是一种常见的前端与后端交互技术组合,用于实现网页的异步数据更新,无需整个页面刷新。Ajax(Asynchronous JavaScript and XML)是利用JavaScript进行局部页面更新的技术,而JSON...

    第三章 Spring MVC Servlet API与Json的支持

    此外,Spring MVC还依赖于Jackson或Gson等库进行JSON序列化和反序列化,将Java对象转换为JSON字符串,或者将JSON数据转换为Java对象。 为了实现JSON与后端数据的交互,我们通常还需要创建一个名为`MessageConverter...

    spring mvc +Extjs

    本篇文章将深入探讨如何使用Spring MVC 3与ExtJS进行数据交互,特别是通过JSON格式来实现这一过程。 首先,Spring MVC 3引入了对RESTful服务的支持,使得JSON数据交换变得更加容易。JSON(JavaScript Object ...

    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常用包

    在Spring MVC框架中,开发Web应用时经常遇到与Ajax交互并返回JSON数据的情况。这个问题的描述揭示了一个常见的问题,即当尝试从服务器返回一个自定义的对象到客户端时,可能会遇到HTTP状态码406(Not Acceptable)的...

    SpringMVC框架中传递JSON数据时前台报406错误解决办法

    在Spring MVC框架中,开发人员经常需要处理JSON数据进行前后端交互。然而,在实际操作中,我们可能会遇到一个常见的问题,即HTTP状态码406(Not Acceptable)。这个错误通常意味着服务器生成了响应,但客户端无法...

    ext + spring Json view + springMVC + Freemaker

    - 数据以Java对象的形式返回,Spring MVC自动将其转换为JSON,通过Spring JSON View发送回客户端。 - EXTJS前端接收到JSON数据后,利用EXTJS的数据绑定机制更新UI组件,如表格或图表。 - 如果需要用户交互,EXTJS...

    Spring3MVC和jQuery的集成

    为了处理返回的JSON数据,jQuery可以监听Ajax的success回调,解析返回的数据并更新DOM。例如,我们可以用这些数据动态地填充表格,或者显示消息提示。 此外,Spring3 MVC还提供了强大的数据绑定和验证功能,可以与...

    spring mvc 例子

    在这个"spring mvc 例子"中,我们将深入探讨如何将Spring MVC与JSON和AJAX技术结合,以实现动态、异步的数据交互。 首先,让我们理解Spring MVC的核心组件: 1. **DispatcherServlet**:它是Spring MVC的前端控制...

    SSM 关于向前台返回json数据问题

    SSM(Spring、SpringMVC、...综上所述,SSM框架中的JSON数据返回涉及SpringMVC的配置、Controller的编写、前端与后端的交互,以及异常处理等方面。正确配置和使用这些技术能确保SSM项目高效地向前端提供JSON数据。

    Spring MVC 中 AJAX请求并返回JSON的示例

    本文将深入讲解如何在Spring MVC中通过AJAX发送请求,并返回JSON(JavaScript Object Notation)数据。 首先,AJAX请求通常由JavaScript代码触发。在提供的示例中,我们看到一个名为`saveSynchronizedVcHorse`的...

    7-Spring-mvc-ajax支持1

    总结来说,Spring MVC通过`@RequestBody`和`@ResponseBody`注解,结合`HttpMessageConverter`,提供了强大的Ajax支持,使得开发者可以轻松地实现前后端的数据交换,构建更加动态和高效的Web应用。

    Java+Ajax+JSON

    通过学习这些文件,开发者可以加深对Java、Ajax和JSON集成的理解,提升Web应用程序的开发能力。 总的来说,Java、Ajax和JSON共同构成了现代Web开发中的重要组成部分,它们的结合使得Web应用能够提供更加流畅、实时...

Global site tag (gtag.js) - Google Analytics