日期:2014-05-16  浏览次数:20422 次

json格式的输入和输出
转载http://starscream.iteye.com/blog/1067606

Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用

Xml代码 
<!-- json --> 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-lgpl</artifactId> 
    <version>1.8.1</version> 
</dependency> 
 
<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-lgpl</artifactId> 
    <version>1.8.1</version> 
</dependency> 



先修改之前的helloworld.jsp,增加客户端json格式的数据输入。
Javascript代码 
    var cfg =   { 
        type: 'POST',  
        data: JSON.stringify({userName:'winzip',password:'password',mobileNO:'13818881888'}),  
        dataType: 'json', 
        contentType:'application/json;charset=UTF-8',        
        success: function(result) {  
            alert(result.success);  
        }  
    }; 
 
function doTestJson(actionName){ 
    cfg.url = actionName; 
    $.ajax(cfg); 




根据前面的分析,在spring mvc中解析输入为json格式的数据有两种方式
1:使用@RequestBody来设置输入
Java代码 
    @RequestMapping("/json1") 
    @ResponseBody 
    public JsonResult testJson1(@RequestBody User u){ 
        log.info("get json input from request body annotation"); 
        log.info(u.getUserName()); 
        return new JsonResult(true,"return ok"); 



2:使用HttpEntity来实现输入绑定
Java代码 
    @RequestMapping("/json2")     
    public ResponseEntity<JsonResult> testJson2(HttpEntity<User> u){ 
        log.info("get json input from HttpEntity annotation"); 
        log.info(u.getBody().getUserName()); 
        ResponseEntity<JsonResult> responseResult = new ResponseEntity<JsonResult>( new JsonResult(true,"return ok"),HttpStatus.OK); 
        return responseResult; 



Json格式的输出也对应有两种方式
1:使用@responseBody来设置输出内容为context body
2:返回值设置为ResponseEntity<?>类型,以返回context body
另外,第三种方式是使用ContentNegotiatingViewResolver来设置输出为json格式,需要修改servlet context配置文件如下
Xml代码 
<bean 
    class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="order" value="1" /> 
    <property name="mediaTypes"> 
        <map> 
            <entry key="json" value="application/json" /> 
        </map> 
    &l