• 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请求



  • 相关阅读:
    Spring MVC系列之Hello World(SpringBoot)(六)
    SpringBoot系列之注解@Autowired VS @Qualifier VS @Primary(五)
    SpringBoot系列之注解@Component VS @Bean(四)
    SpringBoot系列之@PropertySource和@Value注解(二)
    SpringBoot系列之入门篇(一)
    不要叫我,我会叫你(控制反转原理)
    EntityFramework Core 3多次Include导致查询性能低之解决方案
    EntityFramework Core 3.0查询
    Java入门系列之集合HashMap源码分析(十四)
    浅析性能测试策略及适用场景
  • 原文地址:https://www.cnblogs.com/huaobin/p/14908535.html
Copyright © 2020-2023  润新知