Spring MVC返回JSON数据

出处:http://blog.csdn.net/yh_zeng2 http://blog.csdn.net/yh_zeng2/article/details/77074037

Spring MVC对JSON数据的返回提供了良好的支持,现在介绍三种方式:

  • 使用@ResponseBody标注
  • 使用ResponseEntity
  • 使用HttpServletResponse对象返回JSON数据

注意:方式一和方式二,都依赖jackson-databind-版本号.jar、jackson-annotations-版本号.jar、jackson-core-版本号.jar 这几个jar包,也就是项目要导入这三个jar包,并且要定义Json视图解析器!!


例子:

pom.xml文件中添加以下内容,让项目添加所需要的相关的jackson包:

[html] view plain copy
print ?
  1.   
  2.      jackson-annotations-版本号.jar   
  3.      jackson-core-版本号.jar   
  4.       例如:jackson-databind-2.5.4.jar,就依赖jackson-annotations-2.5.0.jar和jackson-core-2.5.4.jar这两个包  
  5. >  
  6. <dependency>  
  7.     <groupId>com.fasterxml.jackson.coregroupId>  
  8.     <artifactId>jackson-databindartifactId>  
  9.     <version>2.5.4version>  
  10. dependency>  
  11.   



    com.fasterxml.jackson.core
    jackson-databind
    2.5.4


Json视图解析器:

[html] view plain copy
print ?
  1.    <bean class=“org.springframework.web.servlet.view.ContentNegotiatingViewResolver”>  
  2.     <property name=“order” value=“1” />  
  3.     <property name=“defaultViews”>  
  4.         <list>  
  5.               
  6.             <bean class=“org.springframework.web.servlet.view.json.MappingJackson2JsonView”/>  
  7.         list>  
  8.     property>  
  9. bean>  
    
        
        
            
                
                
            
        
    
ReturnJsonController.java:

[java] view plain copy
print ?
  1. package edu.mvcdemo.controller;  
  2.   
  3. import javax.servlet.http.HttpServletResponse;  
  4. import org.springframework.context.annotation.Scope;  
  5. import org.springframework.http.HttpStatus;  
  6. import org.springframework.http.ResponseEntity;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.PathVariable;  
  9. import org.springframework.web.bind.annotation.RequestMapping;  
  10. import org.springframework.web.bind.annotation.RequestMethod;  
  11. import org.springframework.web.bind.annotation.ResponseBody;  
  12. import edu.mvcdemo.model.User;  
  13.   
  14. /** 
  15.  * @编写人: yh.zeng 
  16.  * @编写时间:2017-8-7 下午10:12:26 
  17.  * @文件描述: Controller返回JSON数据的demo 
  18.  */  
  19. @Controller  
  20. @Scope(value=“singleton”//只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton  
  21. public class ReturnJsonController {  
  22.       
  23.     /** 
  24.      * 方式一:使用@ResponseBody标注 
  25.      * @param userId 
  26.      * @return 
  27.      */  
  28.     @ResponseBody  
  29.     @RequestMapping(value=“/jsontype/view1/users/{userId}”, method=RequestMethod.GET)  
  30.     public User getUserInJson(@PathVariable(“userId”) Integer userId){  
  31.         User user = new User();  
  32.         user.setNo(userId);  
  33.         user.setUserName(”user”+userId);  
  34.         return user;  
  35.     }  
  36.       
  37.     /** 
  38.      * 方式二:使用ResponseEntity 
  39.      * @param userId 
  40.      * @return 
  41.      */  
  42.     @RequestMapping(value=“/jsontype/view2/users/{userId}”, method=RequestMethod.GET)  
  43.     public ResponseEntity getUserInJson2(@PathVariable(“userId”) Integer userId){  
  44.         User user = new User();  
  45.         user.setNo(userId);  
  46.         user.setUserName(”user”+userId);  
  47.         return new ResponseEntity(user, HttpStatus.OK);  
  48.     }  
  49.       
  50.     /** 
  51.      * 方式三:使用HttpServletResponse对象返回JSON数据 
  52.      * @param userId 
  53.      * @param response 
  54.      * @throws Exception 
  55.      */  
  56.     @RequestMapping(value=“/jsontype/view3/users/{userId}”, method=RequestMethod.GET)  
  57.     public void getUserInJson3(@PathVariable(“userId”) Integer userId, HttpServletResponse response) throws Exception{  
  58.         response.setContentType(”application/json”);  
  59.         response.getWriter().println(”{\”no\”:”+userId+“,\”userName\”:\”user”+userId+“\”,\”age\”:null}”);  
  60.     }  
  61.   
  62. }  
package edu.mvcdemo.controller;

import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import edu.mvcdemo.model.User;

/**
 * @编写人: yh.zeng
 * @编写时间:2017-8-7 下午10:12:26
 * @文件描述: Controller返回JSON数据的demo
 */
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
public class ReturnJsonController {

    /**
     * 方式一:使用@ResponseBody标注
     * @param userId
     * @return
     */
    @ResponseBody
    @RequestMapping(value="/jsontype/view1/users/{userId}", method=RequestMethod.GET)
    public User getUserInJson(@PathVariable("userId") Integer userId){
        User user = new User();
        user.setNo(userId);
        user.setUserName("user"+userId);
        return user;
    }

    /**
     * 方式二:使用ResponseEntity
     * @param userId
     * @return
     */
    @RequestMapping(value="/jsontype/view2/users/{userId}", method=RequestMethod.GET)
    public ResponseEntity getUserInJson2(@PathVariable("userId") Integer userId){
        User user = new User();
        user.setNo(userId);
        user.setUserName("user"+userId);
        return new ResponseEntity(user, HttpStatus.OK);
    }

    /**
     * 方式三:使用HttpServletResponse对象返回JSON数据
     * @param userId
     * @param response
     * @throws Exception
     */
    @RequestMapping(value="/jsontype/view3/users/{userId}", method=RequestMethod.GET)
    public void getUserInJson3(@PathVariable("userId") Integer userId, HttpServletResponse response) throws Exception{
        response.setContentType("application/json");
        response.getWriter().println("{\"no\":"+userId+",\"userName\":\"user"+userId+"\",\"age\":null}");
    }

}


项目demo:https://github.com/zengyh/MavenSpringMvcDemo.git



                
        
    

你可能感兴趣的:(Spring MVC返回JSON数据)