zoukankan      html  css  js  c++  java
  • springmvc10

    当返回值是多个参数(用的比较普遍),返回类型改为List集合,其他不变

    @RequestMapping(value ="returnStudentJsonArray.do" )
    @ResponseBody
    public List<Student> doStudentJsonObjectArray(String name,Integer age){

    List<Student> list = new ArrayList<>();
    Student student = new Student();
    student.setName("wangwu");
    student.setAge(22);
    list.add(student);

    student = new Student();
    student.setName("tianmao");
    student.setAge(10);
    list.add(student);

    return list;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    前端页面 index.jsp ,返回 json 格式为:[{“name”:“wangwu”,“age”:22},{“name”:“tianmao”,“age”:10}]


    <head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.5.1.js"></script>
    <script type="text/javascript">
    $(function () {
    $("button").click(function () {
    // alert("button click");
    $.ajax({

    // url:"returnVoid-ajax.do",
    // url:"returnStudentJson.do",
    url:"returnStudentJsonArray.do",

    data:{
    name:"zhangsan",
    age:20
    },
    type:"post",
    dataType:"json",
    success:function(resp) {

    // alert(resp.name+" "+resp.age);

    //[{"name":"wangwu","age":22},{"name":"tianmao","age":10}]
    $.each(resp,function (i,n) {
    alert(n.name+" "+n.age);
    })
    }
    })
    })
    })
    </script>
    </head>


    处理器方法返回的是 String,表示数据,不是视图

    /*
    * 处理器方法返回的是String,String表示数据的,不是视图。
    * 区分返回值类型String是数据,还是视图,看看有没有@ResponseBody注解
    * 如果有@ResponseBody注解,返回String就是数据,反之就是视图
    * */


    @ResponseBody
    public String doStringData(String name,Integer age){
    return "返回对象,表示数据";
    }

    springmvc 处理器方法返回 object,可以转为 json输出到浏览器,响应 ajax 的内部原理

    1 <mvc:annotation-driven> 注解驱动
    注解驱动实现的功能是:完成java对象到 json,xml,test,二进制等数据格式的转换
    HttpMessageConverter接口:消息转换器
    功能:定义了java转json,xml等数据格式的方法。这个接口有很多实现类
    这些实现类完成了java对象到json,Java对象到xml,Java对象到二进制数据的转换

    2 HttpMessageConverter接口的两个方法是:控制器类把结果输出给浏览器时使用的
    boolean canWrite(Class<?> var1, @Nullable MediaType var2);
    void write(T var1, @Nullable MediaType var2, HttpOutputMessage var3)

    1) canWrite:检查处理器方法返回值,能不能转为var2的数据格式
    2) write:把处理器方法的返回值对象,调用jackson中的ObjectMapper转为json字符串

    3 ResponseBody 注解
    放在处理器方法的上面,通过HttpServletResponse输出结果,响应ajax请求



  • 相关阅读:
    [Codeforces 1214A]Optimal Currency Exchange(贪心)
    [Codeforces 1214D]Treasure Island(dfs)
    [BZOJ 3512]DZY Loves Math IV(杜教筛)
    [BZOJ 3930] [CQOI 2015]选数(莫比乌斯反演+杜教筛)
    [BZOJ 2154]Crash的数字表格(莫比乌斯反演)
    【莫比乌斯反演+分块】BZOJ1101-[POI2007]Zap
    【状态压缩DP】BZOJ1087-[SCOI2005]互不侵犯King
    【概率DP】BZOJ4318-OSU!
    【最大权闭合子图/最小割】BZOJ3438-小M的作物【待填】
    【莫比乌斯反演】HDU1695_GCD
  • 原文地址:https://www.cnblogs.com/huaobin/p/14908535.html
Copyright © 2011-2022 走看看