您的位置:首页 > 编程语言 > Java开发

SpringMVC返回json数据的三种方式

2015-12-04 16:44 483 查看
1、第一种方式是spring2时代的产物,也就是每个json视图controller配置一个Jsoniew。
如:<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/> 
或者<bean id="defaultJsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
同样要用jackson的jar包。

2、第二种使用JSON工具将对象序列化成json,常用工具Jackson,fastjson,gson。
利用HttpServletResponse,然后获取response.getOutputStream()或response.getWriter()
直接输出。
示例:

[java]
view plaincopyprint?

public class JsonUtil  
{  
      
    private static Gson gson=new Gson();  
  
  
    /** 
     * @MethodName : toJson 
     * @Description : 将对象转为JSON串,此方法能够满足大部分需求 
     * @param src 
     *            :将要被转化的对象 
     * @return :转化后的JSON串 
     */  
    public static String toJson(Object src) {  
        if (src == null) {  
            return gson.toJson(JsonNull.INSTANCE);  
        }  
        return gson.toJson(src);  
    }  
}  

3、第三种利用spring mvc3的注解@ResponseBody
例如:

[java]
view plaincopyprint?

@ResponseBody  
  @RequestMapping("/list")  
  public List<String> list(ModelMap modelMap) {  
    String hql = "select c from Clothing c ";  
    Page<Clothing> page = new Page<Clothing>();  
    page.setPageSize(6);  
    page  = clothingServiceImpl.queryForPageByHql(page, hql);  
      
    return page.getResult();  
  }  

然后使用spring mvc的默认配置就可以返回json了,不过需要jackson的jar包哦。
注意:当springMVC-servlet.xml中使用<mvc:annotation-driven />时,如果是3.1之前已经默认注入AnnotationMethodHandlerAdapter,3.1之后默认注入RequestMappingHandlerAdapter只需加上上面提及的jar包即可!

如果是手动注入RequestMappingHandlerAdapter 可以这样设置

配置如下:

<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><strong>[html]</strong> <a target=_blank href="http://blog.csdn.net/shan9liang/article/details/42181345#" class="ViewSource" title="view plain">view plain</a><a target=_blank href="http://blog.csdn.net/shan9liang/article/details/42181345#" class="CopyToClipboard" title="copy">copy</a><a target=_blank href="http://blog.csdn.net/shan9liang/article/details/42181345#" class="PrintSource" title="print">print</a><a target=_blank href="http://blog.csdn.net/shan9liang/article/details/42181345#" class="About" title="?">?</a></div></div><ol class="dp-xml" start="1"><li class="alt"><span><span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"</span><span>  </span></span></li><li><span>        <span class="attribute">p:ignoreDefaultModelOnRedirect</span><span>=</span><span class="attribute-value">"true"</span><span> </span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>            <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"messageConverters"</span><span class="tag">></span><span>  </span></span></li><li><span>                <span class="tag"><</span><span cl
4000
ass="tag-name">list</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>                    <span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"</span><span class="tag">/></span><span>  </span></span></li><li><span>                <span class="tag"></</span><span class="tag-name">list</span><span class="tag">></span><span>  </span></span></li><li class="alt"><span>            <span class="tag"></</span><span class="tag-name">property</span><span class="tag">></span><span>  </span></span></li><li><span>        <span class="tag"></</span><span class="tag-name">bean</span><span class="tag">></span><span>  </span></span></li></ol></div>


添加包

jackson-mapper-asl-*.jar

jackson-core-asl-*.jar

可以看出,使用方式越来越简单,程序员越来越傻,不知道是好事,还是坏事……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: