zoukankan      html  css  js  c++  java
  • Spring MVC中返回JSON数据的几种方式

    我们都知道Spring MVC 的Controller方法中默认可以返回ModeAndView 和String 类型,返回的这两种类型数据是被DispatcherServlet拿来给到视图解析器进行继续处理返回页面的,而不是直接返回给客户端的。有时候我们需要发请求后让服务端直接返回一些数据,不再经过DispatcherServlet,这个时候通常有两种方式:

    1.使用@ResponseBody注解

      该注解的作用是把方法返回结果转成json或xml格式并进行返回,不管要返回什么类型的数据,是String还是一个对象,只要是需要请求后想直接返回Json或xml类型的数据,那么就都可以使用这个注解。

      注意:这里@ResponseBody的格式转换是将class类型如一个javabean,map,list等类型进行转换,转换后的结果是一个json对象,如果想返回一个json字符串,那么就需要自己手动处理成json串的格式,json串也就是一个String,这时@ResponseBody就只起到把这个String返回的作用,示例代码如下:

    @RequestMapping("/jsontest")
    @ResponseBody
    public List<User> jsonTest(){
    //直接返回json串
    //String test1 ="{"name":"zhangsan"}";
    //会直接返回这样一个字符串
    //String test2 = "this is test";

    //以下会把List类型转换为[{},{}]这样的数组形式的json对象返回
    User user1 = new User();
    user1.setLoginName("zhangsan");
    user1.setCompany("dept1");
    User user2 = new User();
    user2.setLoginName("lisi");
    user2.setCompany("dept2");
    List<User> list = new ArrayList<User>();
    list.add(user1);
    list.add(user2);
    return list;
    }
    总结:一般@ResponseBody注解会将map,JavaBean 对象,如User自动转成{"":"","":""}这种json的对象表示形式,会将list转成[a,b,c]这种json的数组表示形式,而String类型的数据
    则会直接原样输出。

    2.使用response对象返回。

     这种方式就是自己进行数据格式转换,使用response对象进行返回。
    response.setContentType("application/json"); response.getWriter().write(resultString);
  • 相关阅读:
    http://blog.csdn.net/steveguoshao/article/details/38414145
    http://www.tuicool.com/articles/EjMJNz
    http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html
    Linux 查看当前时间和修改系统时间
    http://m.blog.csdn.net/article/details?id=49132747
    http://www.cnblogs.com/nick-huang/p/4848843.html
    javaScript事件(一)事件流
    jQuery选择器
    超链接a的target属性
    html基础总结版
  • 原文地址:https://www.cnblogs.com/hanszhao/p/10223374.html
Copyright © 2011-2022 走看看