zoukankan      html  css  js  c++  java
  • Java -- SpringMVC学习笔记4、返回对象Object

    1、对象Object

    处理器方法也可以返回Object对象。这个Object可以是 Integer,String,自定义对象,Map,List 等。但返回的对象不是作为逻辑视图出现的,而是作为直接在页面显示的数据出现的。

    返回对象,需要使用@ResponseBody注解,将转换后的JSON数据放入到响应体中。

    2、环境搭建

    • 添加依赖:
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.9.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.9.0</version>
    </dependency>
    
    • 声明注解驱动

    将Object数据转化为JSON数据,需要由消息转换器 HttpMessageConverter完成。而转换器的开启,需要由mvc:annotation-driven/来完成。SpringMVC使用消息转换器实现请求数据和对象,处理器方法返回对象和响应输出之间的自动转换。

    2.1、返回自定义类型对象

    返回自定义类型对象时,不能以对象的形式直接返回给客户端浏览器,而是将对象转换为JSON格式的数据发送给浏览器的。

    • 定义实体类:
    public class Student
    {
        private String name;
        private int age;
        //getter and setter toString....
    }
    
    • 定义test.jsp页面、引入jQuery、异步请求处理器:
    <head>
        <title>Title</title>
        <script src="js/jquery-3.4.1.min.js"></script>
        <script>
            $(document).ready(function () {
                $.ajax({
                    url: "myajax.do",
                    type: "post",
                    dataType: "json",
                    success: function (data) {
                        alert(data.name + " " + data.age);
                    }
                })
            })
        </script>
    </head>
    <body>
    </body>
    </html>
    
    • 处理器方法:
    @ResponseBody
        @RequestMapping(value = "/myajax.do")
        public Student getStudent()
        {
            Student student = new Student();
            student.setName("张三");
            student.setAge(15);
            return student;
        }
    
    • 在spring配置文件中声明注解驱动:
    <!--声明注解驱动-->
    <mvc:annotation-driven/>
    
    • 这样、当访问test.jsp资源时、就会弹出用户信息。

    2.2、返回List集合

    1、 修改处理器方法:

    @ResponseBody
        @RequestMapping(value = "/myajax.do")
        public List<Student> getStudents()
        {
            List<Student> stuList = new ArrayList<>();
    
            stuList.add(new Student("张三", 18));
    
            stuList.add(new Student("李四", 17));
    
            return stuList;
        }
    

    2、在test.jsp循环输出:

    <script>
        $(document).ready(function () {
            $.ajax({
                url: "myajax.do",
                type: "post",
                dataType: "json",
                success: function (data) {
                    $.each(data, function (i, n) {
                        alert(n.name + " " + n.age);
                    })
                }
            })
        })
    </script>
    

    2.2、返回字符串对象

    若要返回非中文字符串,将前面返回数值型数据的返回值直接修改为字符串即可。但若返回的字符串中带有中文字符、则接收方页面 将会出现乱码 。此时需要使用@RequestMapping的produces性指定字符集。

    1、修改处理器方法:

    @ResponseBody
    @RequestMapping(value = "/myajax.do", produces = "text/plain;charset=utf-8")
    public String getStudents()
    {
        return "哈哈啥";
    }
    

    2、在test.jsp输出:

    <script>
        $(document).ready(function () {
            $.ajax({
                url: "myajax.do",
                type: "post",
                success: function (data) {
                    alert(data);
                }
            })
        })
    </script>
    
  • 相关阅读:
    对Promise的研究4
    对Promise的研究3
    对Promise的研究2
    对promise的研究1
    数据结构_栈
    数据结构_队列(普通队列和双端队列)
    数据结构_链表(单链表,单向循环链表,双链表)
    数据库进行参数化,查询一行或多行语句
    数据库基础应用
    选择排序
  • 原文地址:https://www.cnblogs.com/dcy521/p/14791938.html
Copyright © 2011-2022 走看看