spring之json数据的接受和发送

配置spring对json的注解方式。

     <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
     <property name="messageConverters">
            <list >
                <ref bean="mappingJacksonHttpMessageConverter" />
            </list>
        </property>
    </bean>

        <!-- 处理JSON数据转换的 -->
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
             <property name="supportedMediaTypes">
            <list>
                  <value>text/html;charset=UTF-8</value>
                  <value>application/json; charset=UTF-8</value>
            </list>
        </property>
    </bean>

Controller层使用了@requestBody和@responseBody注解

    /**
     * 接受json参数,返回json数据
     * @param area
     * @param request
     * @param response
     * @return
     * @throws Exception
     */
    @ResponseBody
    @RequestMapping("/getJson")
    public Map<String, Object> getJson(@RequestBody Area area, HttpServletRequest request,HttpServletResponse response) throws Exception{
        Map<String, Object> resultMap = new HashMap<String, Object>();
        try {
            System.out.println(area.getName());
            Area entity  = areaService.queryById(area.getId());
            responseOk(resultMap, entity);
        } catch (Exception e) {
            responseError(resultMap, Constant.FAILURE_MESSAGE, e);
        }
        return resultMap;
    }
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="/./resources/js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">

    $(function(){
        $(".areajson").click(function(){
            var id=$(this).attr("id");
            var areaNmae=$(this).attr("areaNmae");
            var level=$(this).attr("level");
            var json = JSON.stringify({"id":id,"name":areaNmae,"level":level});//发送json数据
                jQuery.ajax({
                    url:"/area/getJson",
                    type:"post",
                    dataType:"json",
                    data:json,
                    contentType:‘application/json;charset=UTF-8‘,//使用@requestBody必须设置contentType为json才能接受到Json数据
                    success:function(jsondata){
                        alert(jsondata.result.name);
                    }
            })
        })

    })
</script>
<title>Insert title here</title>
</head>
<body>
    #foreach($obj in $!list)
    <a href="javascript:;"><span id="$!obj.id" class="areajson" areaNmae="$!obj.name" level="$!obj.level">$!obj.name</span></a>
    #end
</body>
</html>

我在这里遇到两个问题:1、用$.ajax({}),使用$一直报错,但是用jQuery就不报错,暂时还不知道原因。2、必须设置contentType,不然会报415错误。

这样就完成spring接受和返回json数据了。很简单的一个例子。

还有一种就是使用printWriter来返回json。

     response.setContentType("text/plain");
        response.setHeader("Cache-Control", "no-cache");
        response.setCharacterEncoding("UTF-8");
        try {
            PrintWriter writer = response.getWriter();
            writer.print(Json.toJson(resultMap));
        } catch (IOException e) {
            e.printStackTrace();
        }

这里的Json是org.nutz.json.Json;将map转化为json数据。Json.toJson接受的参数是Object。所有也可以是数组、集合、对象。

post提交方式,以上面那种参数提交的话,他的请求体是这样的

如果以这种方式提交参数。

data:{"id":id,"name":areaNmae,"level":level}

可以看看Request Payload。

Json数据现在在APP或者是网站上都非常有用。得到json数据,要具体的数据只要一直.过去就行了。例如a.b.c.d就能获取到d的值。

时间: 2024-11-05 21:59:49

spring之json数据的接受和发送的相关文章

(转)获取 request 中用POST方式&quot;Content-type&quot;是&quot;application/x-www-form-urlencoded;charset=utf-8&quot;发送的 json 数据

request中发送json数据用post方式发送Content-type用application/json;charset=utf-8方式发送的话,直接用springMVC的@RequestBody标签接收后面跟实体对象就行了,spring会帮你自动拼装成对象,如果Content-type设置成application/x-www-form-urlencoded;charset=utf-8就不能用spring的东西了,只能以常规的方式获取json串了 方式一:通过流的方方式 [java] vie

httpClient post方法 解析json数据(向服务器传递,接受服务器传递)

import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEnt

SpringMVC中controller接收Json数据

SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath %>ajaxRequest", co

Spring MVC如何进行JSON数据的传输与接受

本篇文章写给刚接触SpingMVC的同道中人,虽然笔者本身水平也不高,但聊胜于无吧,希望可以给某些人带来帮助 笔者同时再次说明,运行本例时,需注意一些配置文件和网页脚本的路径,因为笔者的文件路径与读者的未必相同 首先准备以下 jar包:commons-logging-1.1.3.jarjackson-core-asl-1.9.2.jarjackson-mapper-asl-1.9.2.jarspring-aop-4.0.6.RELEASE.jarspring-beans-4.0.6.RELEAS

自定义HttpMessageConverter接受JSON数据

Spring默认使用Jackson处理json数据.实际开发中,在业界中,使用非常受欢迎的fastjson来接受json数据. 创建一个项目,在web目录下新建一个assets/js目录,加入jquery和json2的js文件,在lib下加入fastjson的jar文件. BookController package com.wen.controller; import com.alibaba.fastjson.JSONObject; import com.wen.domain.Book; im

Spring MVC登录注册以及转换json数据

项目结构; 代码如下: BookController package com.mstf.controller; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codehaus.jackson.map.ObjectMapper; import com.mstf.

Android与PHP交互,Android传递JSON数据,PHP接受并保存数据

突然想到这样一个功能,用户使用某客户端登陆的时候,客户端做了以下两件事,一个是跳转页面,返回个人信息:第二个是将信息返回到服务器,服务器将数据保存在数据库中.这样一来用户的个人信息也就获取到了! 事不宜迟赶快实现吧! 正好我的SAE云豆还没有消耗完,我就打算用PHP做后台! 客户端与服务端传送现在比较流行传递Json字符串!(还好之前了解过Json),android将数据包装成Json格式,然后通过Httpclient发送给PHP后台,php根据属性名得到Json字符串,然后做出解析,最后保存(

ajax 发送json数据时为什么需要设置contentType: &quot;application/json”

1. ajax发送json数据时设置contentType: "application/json"和不设置时到底有什么区别? contentType: "application/json",首先明确一点,这也是一种文本类型(和text/json一样),表示json格式的字符串,如果ajax中设置为该类型,则发送的json对象必须要使用JSON.stringify进行序列化成字符串才能和设定的这个类型匹配.同时,对应的后端如果使用了Spring,接收时需要使用@Req

Spring接收和响应json数据

一.前言 关于什么是json以及基本使用技巧,为什么使用json等等,这里不再重复,直接进入主题 注:服务端接收json数据还原为java对象,称为反序列化,反之,将java对象作为响应转换为json数据发回给客户端,称为序列化 二.导入json相关框架的依赖(比如jackson) 如果使用的是spring boot框架,导入spring boot相关依赖后,就存在相关依赖,无需重复,否则会报错:   如果使用的是spring MVC框架,就需要手动导入相关依赖(比如Jackson),直接上代码