一、json

简介:

        json是一个轻量级数据交换格式   主要用于前后端数据传输

        json传输效率比较高  便于解析

        json就是一个特殊的字符串  这个字符串有固定的格式

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_数据库

语法:

        对象:{} ===> 表示是对象 例如:{"uid":10,"uname":"张三"}        

        数组:[] ===> 表示是数组 例如:[{"uid":10,"uname":"张三"},{"uid":11,"uname":"李 四"} ]

 对象嵌套数组 或者是数组嵌套对象 :

        A.对象中嵌套数组 {"employees": [{ "firstName":"Bill" , "lastName":"Gates" }]}

        B.数组中嵌套对象 [{date: "Sep 18 2016", music: { title: "夜夜夜夜-齐秦"}}]

注意点:

        A.json是以键值对来进行存储

        B.json中每一个属性与属性值都是以冒号分割

        C.json中每一个组属性值都是以逗号分割

参考网站:https://www.sojson.com/json2entity.html

fastJson解析:

        

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_json_02

package com.qf.test;

import com.alibaba.fastjson.JSON;
import com.qf.entity.Books;
import com.qf.entity.Person;
import com.qf.entity.Student;

import java.util.ArrayList;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {

        //实例化学生对象
        Student stu  = new Student(1001,"张珊","123456");
        //将学生对象转换为json串
        String s = JSON.toJSONString(stu);
        System.out.println(s);
        //将json串解析为Student对象
        Student student = JSON.parseObject(s, Student.class);
        System.out.println(student);

        //实例化集合
        List<Student> list = new ArrayList<>();
        //添加元素
        list.add(new Student(1002,"李思","123"));
        list.add(new Student(1003,"王舞","1223"));
        list.add(new Student(1004,"赵柳","1244"));
        //将集合转换为json串
        String s1 = JSON.toJSONString(list);
        System.out.println(s1);
        //将json串解析为集合
        List<Student> list1 = JSON.parseArray(s1, Student.class);
        System.out.println(list1);

        String json1 = "{'name':'huochai','age':29,'school':{'name':'iankeyuan','location':'beijing'}}";
        Person person = JSON.parseObject(json1, Person.class);
        System.out.println(person);

        String json2 = "[\n" +
                "    {\n" +
                "        date: \"Sep 18 2016\",\n" +
                "        title: \"御剑飞仙翱于九天\",\n" +
                "        imgSrc: \"/images/post/crab.png\",\n" +
                "        avatar: \"/images/avatar/1.png\",\n" +
                "        content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
                "        reading: \"112\",\n" +
                "        collection: \"96\",\n" +
                "        headImgSrc: \"/images/post/crab.png\",\n" +
                "        author: \"林白衣\",\n" +
                "        dateTime: \"24小时前\",\n" +
                "        detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
                "        postId: 0,\n" +
                "        music: {\n" +
                "            url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
                "            title: \"夜夜夜夜-齐秦\",\n" +
                "            coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
                "        }\n" +
                "    },\n" +
                "\n" +
                "{\n" +
                "        date: \"Sep 18 2016\",\n" +
                "        title: \"御剑飞仙翱于九天\",\n" +
                "        imgSrc: \"/images/post/crab.png\",\n" +
                "        avatar: \"/images/avatar/1.png\",\n" +
                "        content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
                "        reading: \"112\",\n" +
                "        collection: \"96\",\n" +
                "        headImgSrc: \"/images/post/crab.png\",\n" +
                "        author: \"林白衣\",\n" +
                "        dateTime: \"24小时前\",\n" +
                "        detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
                "        postId: 0,\n" +
                "        music: {\n" +
                "            url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
                "            title: \"夜夜夜夜-齐秦\",\n" +
                "            coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
                "        }\n" +
                "    }\n" +
                "\n" +
                "  \n" +
                "    \n" +
                "]";
        List<Books> books = JSON.parseArray(json2, Books.class);
        for (Books b :books) {
            System.out.println(b);

        }




    }
}

gson 解析:

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_json_03

package com.qf.test;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.qf.entity.Books;
import com.qf.entity.Student;

import java.util.ArrayList;
import java.util.List;

public class Test02 {
    public static void main(String[] args) {
        //实例化Gson对象
        Gson g = new Gson();
        Student student = new Student(1001,"张珊","123456");
        //将对象转换为json串
        String s = g.toJson(student);
        System.out.println(s);
        //将json串解析为对象\
        Student student1 = g.fromJson(s, Student.class);
        System.out.println(student);

        List<Student> list = new ArrayList<>();
        list.add(new Student(1002,"李思","123"));
        list.add(new Student(1003,"王舞","123"));
        list.add(new Student(1004,"赵柳","123"));
        list.add(new Student(1005,"孙琦","123"));
        //将集合转换为json串
        String s1 = g.toJson(list);
        System.out.println(s1);
        //将json串解析为集合
        List<Student> list1=g.fromJson(s1,new TypeToken<List<Student>>(){}.getType());
        System.out.println(list1);

        String json2 = "[\n" +
                "    {\n" +
                "        date: \"Sep 18 2016\",\n" +
                "        title: \"御剑飞仙翱于九天\",\n" +
                "        imgSrc: \"/images/post/crab.png\",\n" +
                "        avatar: \"/images/avatar/1.png\",\n" +
                "        content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
                "        reading: \"112\",\n" +
                "        collection: \"96\",\n" +
                "        headImgSrc: \"/images/post/crab.png\",\n" +
                "        author: \"林白衣\",\n" +
                "        dateTime: \"24小时前\",\n" +
                "        detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
                "        postId: 0,\n" +
                "        music: {\n" +
                "            url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
                "            title: \"夜夜夜夜-齐秦\",\n" +
                "            coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
                "        }\n" +
                "    },\n" +
                "\n" +
                "{\n" +
                "        date: \"Sep 18 2016\",\n" +
                "        title: \"御剑飞仙翱于九天\",\n" +
                "        imgSrc: \"/images/post/crab.png\",\n" +
                "        avatar: \"/images/avatar/1.png\",\n" +
                "        content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
                "        reading: \"112\",\n" +
                "        collection: \"96\",\n" +
                "        headImgSrc: \"/images/post/crab.png\",\n" +
                "        author: \"林白衣\",\n" +
                "        dateTime: \"24小时前\",\n" +
                "        detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
                "        postId: 0,\n" +
                "        music: {\n" +
                "            url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
                "            title: \"夜夜夜夜-齐秦\",\n" +
                "            coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
                "        }\n" +
                "    }\n" +
                "\n" +
                "  \n" +
                "    \n" +
                "]";
        List<Books> list2 =g.fromJson(json2,new TypeToken<List<Books>>(){}.getType());
        for (Books b :list2) {
            System.out.println(b);

        }


    }
}

二、ajax

简介:

        ajax是一种动态网页技术

        主要用于页面的局部加载

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_java_04

ajax的特点:

        局部加载:

                只需要加载网页页面的一部分,不用加载整个页面   效率高

        同步(不是ajax的特点,这里只是介绍):

                  先获取完整的数据,再加载页面    例如:转账时的同步

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_java_05

        异步:

                  先加载页面,在获取数据    例如:直播弹幕,先加载直播画面 在加载弹幕

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_学习_06

ajax的使用场景:

        注册手机号验证

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_java_07

        直播弹幕

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_json_08

         百度搜索 

fastjson 多级嵌套 jsonobject转java对象的方法 json可以嵌套吗_System_09

 案例:

        需求:验证用户名是否可用

                get方式jsp代码:

<%--
  Created by IntelliJ IDEA.
  User: 86182
  Date: 2022/9/8
  Time: 10:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <input type="text" id="tv_uname" onblur="cheleckName()"><span style="color: red" id="tv_sp"></span>
  <script>
    function cheleckName() {
      var uname = document.getElementById("tv_uname").value;
      if (uname==null||uname==""){
        document.getElementById("tv_sp").innerHTML="输入不能为空";
      }else {
        //获取ajax核心对象
         xmlHttpRequest = new XMLHttpRequest();
         //设置回调函数
        xmlHttpRequest.onreadystatechange=callBack;
        //get方法 url地址
        var url = "userServlet?uname="+uname;
        //建立连接
        xmlHttpRequest.open("get",url,true);//第一个参数表示提交方式,第二个参数表示请求地址,第三个参数表示是否支持异步
        //发送请求
        xmlHttpRequest.send(null);//get方式提交 传递的参数已经在URL地址上拼接了

      }

    }
    function callBack() {
      //xmlHttpRequest.readyState ==4 表示与服务器建立了连接
      // xmlHttpRequest.status ==200 表示响应成功
      //判断是否连接并响应成功
      if (xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
        //获取服务器传递的标记
        var flag = xmlHttpRequest.responseText;
        //判断
        if (flag=="true"){
          document.getElementById("tv_sp").innerHTML="用户名可以使用";
        }else {
          document.getElementById("tv_sp").innerHTML="用户名不可以使用";
        }
      }

    }
  </script>
  </body>
</html>

                 以post方式提交的jsp页面:

<%--
  Created by IntelliJ IDEA.
  User: 86182
  Date: 2022/9/8
  Time: 10:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <input type="text" id="tv_uname" onblur="cheleckName()"><span style="color: red" id="tv_sp"></span>
  <script>
    function cheleckName() {
      var uname = document.getElementById("tv_uname").value;
      if (uname==null||uname==""){
        document.getElementById("tv_sp").innerHTML="输入不能为空";
      }else {
        //获取ajax核心对象
         xmlHttpRequest = new XMLHttpRequest();
         //设置回调函数
        xmlHttpRequest.onreadystatechange=callBack;
        //get方法 url地址
        //var url = "userServlet?uname="+uname;
        //post方式 URL地址
        var url = "userServlet";
        //建立连接
        xmlHttpRequest.open("post",url,true);//第一个参数表示提交方式,第二个参数表示请求地址,第三个参数表示是否支持异步
        //以post方式提交必须设置请求头
        xmlHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        //发送请求
        //xmlHttpRequest.send(null);//get方式提交 传递的参数已经在URL地址上拼接了
        //以post方式提交 要发送参数
        var data = "uname="+uname;
        xmlHttpRequest.send(data);

      }

    }
    function callBack() {
      //xmlHttpRequest.readyState ==4 表示与服务器建立了连接
      // xmlHttpRequest.status ==200 表示响应成功
      //判断是否连接并响应成功
      if (xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
        //获取服务器传递的标记
        var flag = xmlHttpRequest.responseText;
        //判断
        if (flag=="true"){
          document.getElementById("tv_sp").innerHTML="用户名可以使用";
        }else {
          document.getElementById("tv_sp").innerHTML="用户名不可以使用";
        }
      }

    }
  </script>
  </body>
</html>

        UserServlet类:

package com.qf.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "userServlet",urlPatterns = "/userServlet")
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取前端传递的参数
        String uname = req.getParameter("uname");
        //定义一个标记
        boolean flag = false;
        //模拟验证
        if ("admin".equals(uname)){
            //表示用户名已经存在 不能使用
            flag = false;
        }else {
            //表示用户名不存在可以使用
            flag = true;
        }
        //将标记返回给ajax
        PrintWriter writer = resp.getWriter();
        writer.print(flag);
        //刷新
        writer.flush();
        //关闭资源
        writer.close();
    }
}

使用jquery方式实现:

        url ==>表示请求路径

        type==>表示提交方式

        data ==>表示请求传递的参数

        dataType==>表示返回数据的类型   text   json   xml

        success==> 表示请求成功的回调

        error==> 表示请求失败的回调

<%--
  Created by IntelliJ IDEA.
  User: 86182
  Date: 2022/9/8
  Time: 16:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.min.js"></script>
</head>
<body>
<input type="text" id="tv_uname"><span style="color: red" id="tv_sp"></span>
<script>
    // 使用jquery方式实现ajax
    /*$("#tv_uname").blur(function () {
        var uname = $("#tv_uname").val();
        if (uname==null||uname==""){
            $("#tv_sp").html("不能为空");
        }else {
            $.ajax({
                "url":"userServlet",
                "type":"post",
                "data":{"uname":uname},
                "dataType":"text",
                "success":function (data) {
                    if (data=="true"){
                        $("#tv_sp").html("可以使用");
                    }else {
                        $("#tv_sp").html("不可以使用");
                    }
                },
                "error":function () {
                    alert("请求失败");
                }
            });
        }
    })*/

    //简化jquery方式实现
    $("#tv_uname").blur(function () {
        var uname = $("#tv_uname").val();
        if (uname==null||uname==""){
            $("#tv_sp").html("不能为空");
        }else {
            $.post("userServlet",{"uname":uname},function (data) {
                if (data=="true"){
                    $("#tv_sp").html("可以使用");
                }else {
                    $("#tv_sp").html("不可以使用");
                }
            },"text")
        }
    })
</script>
</body>
</html>

 案例:

        需求:动态填充table  和 ul

        代码:

                jsp

<%--
  Created by IntelliJ IDEA.
  User: 86182
  Date: 2022/9/8
  Time: 16:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.min.js"></script>
</head>
<body>
<table id="tv_ta" width="80%" border="1px" cellspacing="0px" cellpadding="0px" align="center">

</table>
<ul id="tv_ul">

</ul>
<script>
    function show1(){
        $.ajax({
            "url":"servlet1",
            "type":"post",
            "data":{},
            "dataType":"text",
            "success":function (data) {
                //将后端传递的数据转换为前端可以解析的json
                var jsonStr = JSON.parse(data);
                //定义一个变量拼接
                var temp = "";
                //循环json串
                $(jsonStr).each(function () {
                    temp+="<li>"+this+"</li>";
                })
                //将数据写入页面
                $("#tv_ul").html(temp);
            },
            "error":function () {
                alert("请求失败");
            }
        });
    }
    function show2(){
        $.ajax({
           "url":"servlet2",
           "type":"post",
           "data":{},
           "dataTyep":"text",
           "success":function (data) {
               //将接收的数据转换为json串
               var jsonStr=JSON.parse(data);
               //定义一个变量拼接
               var temp="";
               //循环
               $(jsonStr).each(function () {
                   temp+="<tr>";
                   temp+="<td>"+this.sid+"</td>";
                   temp+="<td>"+this.sname+"</td>";
                   temp+="<td>"+this.spwd+"</td>";
                   temp+="</tr>"
               })
               //将数据写入页面
               $("#tv_ta").html(temp);
           },
            "eroor":function () {
               alert("请求失败")
            }
        });
    }
    $(function () {
        show1();
        show2();
    });
</script>
</body>
</html>

        servlet:

package com.qf.servlet;

import com.alibaba.fastjson.JSON;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "servlet1",urlPatterns = "/servlet1")
public class Servlet1 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //实例化集合
        List<String > list = new ArrayList<>();
        list.add("张珊");
        list.add("李思");
        list.add("王舞");
        //将集合转换为json串
        String s = JSON.toJSONString(list);
        //实例化输出流
        PrintWriter pw = resp.getWriter();
        //将json串传输给前端
        pw.print(s);
        pw.flush();
        pw.close();
    }
}







package com.qf.servlet;

import com.alibaba.fastjson.JSON;
import com.qf.entity.Student;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "servlet2",urlPatterns = "/servlet2")
public class Servlet2 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //实例化集合
        List<Student> list = new ArrayList<>();
        list.add(new Student(1001,"班长","嫩老"));
        list.add(new Student(1002,"梁男","钓鱼老"));
        list.add(new Student(1003,"黑福","洗脚老"));
        //将集合转换为json串
        String s = JSON.toJSONString(list);
        //实例化输出流
        PrintWriter pw = resp.getWriter();
        //将json串传输给前端
        pw.print(s);
        pw.flush();
        pw.close();
    }
}