zoukankan      html  css  js  c++  java
  • 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的值。

  • 相关阅读:
    bzoj3751 / P2312 解方程
    P1270 “访问”美术馆(树形dp)
    [bzoj1085][SCOI2005]骑士精神
    [bzoj1208][HNOI2004]宠物收养所
    [bzoj1196][HNOI2006]公路修建问题
    [bzoj1093][ZJOI2007]最大半连通子图
    [bzoj1103][POI2007]大都市meg
    [Apio2009][bzoj1179]Atm
    [bzoj1191][HNOI2006]超级英雄Hero
    [bzoj2458][BeiJing2011]最小三角形
  • 原文地址:https://www.cnblogs.com/hjy9420/p/4246005.html
Copyright © 2011-2022 走看看