springmvc+json

1.在写我的springmvc demo时,由于要向前台返回相关信息,于是设置了@ResponseBody,但是要把对象转换成json格式,我却没有在xml文件里配置,所以报如下错误:
HttpMediaTypeNotAcceptableException: Could not find acceptable representation。
于是采用默认配置,即曾经号称“史上最快json”的Jackson

    <!-- 启用spring mvc 注解-->
    <mvc:annotation-driven>
        <!-- 启动JSON格式的配置 -->
        <mvc:message-converters>
        <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>  <!-- 避免IE出现下载JSON文件的情况 -->
                </list>
            </property>
        </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

2.运行之后报错:Could not find acceptable representation

原因是我忘记加入了jackson的两个包:jackson-core-asl-1.9.13和jackson-mapper-asl-1.9.13

3.运行之后又报错:元素 ‘mvc:annotation-driven‘ 必须不含字符或元素信息项 [子级], 因为该类型的内容类型为空。发现我的xml里面的mvc命名空间中xsd版本是3.0的,但是我用的是4.0,后来想想去掉这个版本序号,默认的版本是什么呢?就试了下,好像是默认最新的(可以在myeclipse里面打开该链接,查看xsd文件)

4.在网上查找资料时,看到了有关fastjson的文章,就看了看,发现网上对fastjson褒贬不一,褒的是fastjson就像它名字一样,序列化和反序列化速度很快,还有人专门做了测试;贬的是fastjson是阿里巴巴的温少写的,相关文档较少,遇到问题解决起来比较困难。但是由于我对阿里巴巴的执念,我还是用了fastjson

    <!-- 启用spring mvc 注解-->
       <mvc:annotation-driven>
        <!-- 启动JSON格式的配置 -->
           <mvc:message-converters>
           <!-- 这里也可以自己定制class -->
        <bean id="jsonConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"><!-- 这里也可以自己定制class -->
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>  <!-- 避免IE出现下载JSON文件的情况 -->
                </list>
            </property>
        </bean>
    </mvc:message-converters>
       </mvc:annotation-driven>

备注:

@ResponseBody:将内容或对象作为 HTTP 响应正文返回,使用@ResponseBody将会跳过视图处理部分,而是调用适合的HttpMessageConverter,将返回值写入输出流。

在传日期格式的数据到前台的时候,fastjson默认将Date类型转为Long型,所以会导致后台Date类型的数传到前台出错
解决办法:
1.局部解决-加注解。即在相应的字段上加入如下注解@JSONField (format="yyyy-MM-dd HH:mm:ss"),fastjson向前台输出json时,就会保留你设置的格式。但是这样的话,就是你要注意,在每个Date类型的字段上都要加上这样的注解
2.全局解决-写一个注解的处理类,在xml文件里调用自己定义的一个class,相当于重写fastjson的converter。
3.全局解决-写一个Date和String转换类,在后台先将数据转成String再传到前台去。前台string传过来之后再转成Date,这样就不会出错

时间: 2024-10-27 13:28:00

springmvc+json的相关文章

springmvc json结合

获取json数据     名字一样就获取了 user 1 @RequestMapping("/addUser") 2 public String addUser(User user,HttpServletRequest request){ 3 request.setAttribute("userName", user.getUserName()); 4 request.setAttribute("age", user.getAge()); 5 6

springMVC+json构建restful风格的服务

首先.要知道什么是rest服务,什么是rest服务呢? REST(英文:Representational State Transfer,简称REST)描写叙述了一个架构样式的网络系统.比方 web 应用程序. 它首次出如今 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之中的一个. 在眼下主流的三种Web服务交互方案中.REST相比于SOAP(Simple Object Access protocol,简单对象訪问协议)以及XML-RPC更加简单明了,不管

SpringMVC - Json交互

1. 请求json 输出json 要求请求的是json串 所以在前端页面需要将请求转成json 不太方便2. 请求key/value 输出json 此方法比较常用 1. 环境准备:SpringMVC默认使用MappingJcksonHttpMessageConverter 对json数据进行转换(@RequestBody @ResponseBody使用下面的包进行json转换), 需要加入jackson包 2. 配置json转换器在注解适配器中加入messageConverters

关于springmvc json交互产生的406错误

产生错误的背景:springmvc使用<mvc:annotation-driven>进行配置,那么只要引入响应的json解析包就可以了.在pom中已经引入了如下: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.5</version>

关于SpringMVC Json使用

很简单的一个东西,这里就不做过多介绍了,写一个小Demo,随手记录下. 首先,在搭好SpringMVC工程环境之后,如果想用Spring自带的Json,需要额外的添加2个JAR包: 1.jackson-core-asl-1.9.9.jar 2.jackson-mapper-asl-1.9.9.jar 我这里使用的是Maven,也相对应的给出pox.xml 1 <dependency> 2 <groupId>org.codehaus.jackson</groupId> 3

SpringMVC - JSON数据交互

Json(JavaScript Object Notation),它是一种轻量级数据交换格式,格式简单,易于读写,目前使用特别广泛. 两种交互模式 ① 请求json.输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成json,不太方便.② 请求key/value.输出json.此方法比较常用. @RequestBody 与 @ResponseBody ● @RequestBody:接收用户传入json串转成pojo 用于读取http请求的内容(字符串),通过Springm

springmvc json 406

spring 4.0 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.or

springmvc json字符串转化成json对象

问题出现在 :页面数据列表的展示出现 [object HTMLInputElement] 找到问题的所在原因后又三种解决方案 一:格式化json字符串为json对象字符串 success:function(data){ data=eval('('+data+')'); //在返回的数据里加上这就代码, alert(data);} 二:指定数据类型为json $.ajax({ type:'post', data:{pageSize:15,currentPage:1}, url:'<%=ctxPat

SpringMVC+Json构建基于Restful风格的应用(转)

一.spring 版本:spring-framework-3.2.7.RELEASE 二.所需其它Jar包: 三.主要代码: web.xml [java] view plaincopy <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org