(九)springmvc之json的处理(服务端发送json数据到客户端)

一、json处理方法有两种

    1:导入Spring需要json的jar包。(本例使用)

        使用@ResponseBody该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过         Response响应给客户端     

    

     2:springmvc.xml中配置转换json的配置。

   

二、案例一:使用@ResponseBody

  •    依赖的包

    <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.5.1</version>
        </dependency>

index.jsp

<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function ajax_json_1(){
    var getURL = "<%=request.getContextPath()%>/jsonController/dogList?date="+new Date()+"";
    jQuery.get(getURL,function(jsonList){
        for(var i = 0;i<jsonList.length;i++){
            var dogBean = jsonList[i];
            window.alert(dogBean.dogid);
        }
    },"json");
}
</script>
</head>
<body>

    <a href="javascript:void(0);" onclick="ajax_json_1();">jQuery来访问_SpringMVC返回json对象</a>
</body>

controller

package com.shyroke.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.shyroke.bean.DogBean;

@Controller
@RequestMapping(value="/jsonController")
public class JsonController {

    
    @RequestMapping(value="/dogList")
    @ResponseBody
    public List<DogBean> getListDog(){
        List<DogBean> dogList=new ArrayList<DogBean>();
        DogBean dog1=new DogBean();
        dog1.setDogid("1");
        dog1.setDogname("dog1");
        
        DogBean dog2=new DogBean();
        dog2.setDogid("2");
        dog2.setDogname("dog2");
        
        dogList.add(dog1);
        dogList.add(dog2);
        return dogList;
    }
    
}

三、案例二:服务端使用原始的方式返回json数据,方法不需要有返回值

  • 同样需要引入上例的包

<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.json-2.4.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/script/jquery.form.js"></script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">function ajax_json_2(){
    var getURL = "<%=request.getContextPath()%>/jsonController/dogBean?date="+new Date()+"";
    jQuery.get(getURL,function(jsonObj){
        window.alert(jsonObj.dogid + "		" + jsonObj.dogname);
    },"json");
}

</script>
</head>
<body>
    <a href="javascript:void(0);" onclick="ajax_json_2();">jQuery来访问_原始返回json对象</a>
</body>

controller

package com.shyroke.controller;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.shyroke.bean.DogBean;

@Controller
@RequestMapping(value="/jsonController")
public class JsonController {
 
    @RequestMapping(value="dogBean")
    public void GetDog(HttpServletRequest request,HttpServletResponse response) throws Exception{
        PrintWriter out=response.getWriter();
        
        DogBean dog1=new DogBean();
        dog1.setDogid("1");
        dog1.setDogname("dog1");
        
        /**
         * 转成json字符串。
         */
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
        // 配置mapper忽略空属性
        objectMapper.setSerializationInclusion(Include.NON_EMPTY);

        String jsonStr = objectMapper.writeValueAsString(dog1);
        
        out.print(jsonStr);
        out.flush();
        out.close();
    }
}
原文地址:https://www.cnblogs.com/shyroke/p/7778303.html