• day17学习总结


    一、json

    简介:

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

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

            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解析:

            

    1. package com.qf.test;
    2. import com.alibaba.fastjson.JSON;
    3. import com.qf.entity.Books;
    4. import com.qf.entity.Person;
    5. import com.qf.entity.Student;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. public class Test01 {
    9. public static void main(String[] args) {
    10. //实例化学生对象
    11. Student stu = new Student(1001,"张珊","123456");
    12. //将学生对象转换为json串
    13. String s = JSON.toJSONString(stu);
    14. System.out.println(s);
    15. //将json串解析为Student对象
    16. Student student = JSON.parseObject(s, Student.class);
    17. System.out.println(student);
    18. //实例化集合
    19. List list = new ArrayList<>();
    20. //添加元素
    21. list.add(new Student(1002,"李思","123"));
    22. list.add(new Student(1003,"王舞","1223"));
    23. list.add(new Student(1004,"赵柳","1244"));
    24. //将集合转换为json串
    25. String s1 = JSON.toJSONString(list);
    26. System.out.println(s1);
    27. //将json串解析为集合
    28. List list1 = JSON.parseArray(s1, Student.class);
    29. System.out.println(list1);
    30. String json1 = "{'name':'huochai','age':29,'school':{'name':'iankeyuan','location':'beijing'}}";
    31. Person person = JSON.parseObject(json1, Person.class);
    32. System.out.println(person);
    33. String json2 = "[\n" +
    34. " {\n" +
    35. " date: \"Sep 18 2016\",\n" +
    36. " title: \"御剑飞仙翱于九天\",\n" +
    37. " imgSrc: \"/images/post/crab.png\",\n" +
    38. " avatar: \"/images/avatar/1.png\",\n" +
    39. " content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
    40. " reading: \"112\",\n" +
    41. " collection: \"96\",\n" +
    42. " headImgSrc: \"/images/post/crab.png\",\n" +
    43. " author: \"林白衣\",\n" +
    44. " dateTime: \"24小时前\",\n" +
    45. " detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
    46. " postId: 0,\n" +
    47. " music: {\n" +
    48. " url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
    49. " title: \"夜夜夜夜-齐秦\",\n" +
    50. " coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
    51. " }\n" +
    52. " },\n" +
    53. "\n" +
    54. "{\n" +
    55. " date: \"Sep 18 2016\",\n" +
    56. " title: \"御剑飞仙翱于九天\",\n" +
    57. " imgSrc: \"/images/post/crab.png\",\n" +
    58. " avatar: \"/images/avatar/1.png\",\n" +
    59. " content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
    60. " reading: \"112\",\n" +
    61. " collection: \"96\",\n" +
    62. " headImgSrc: \"/images/post/crab.png\",\n" +
    63. " author: \"林白衣\",\n" +
    64. " dateTime: \"24小时前\",\n" +
    65. " detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
    66. " postId: 0,\n" +
    67. " music: {\n" +
    68. " url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
    69. " title: \"夜夜夜夜-齐秦\",\n" +
    70. " coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
    71. " }\n" +
    72. " }\n" +
    73. "\n" +
    74. " \n" +
    75. " \n" +
    76. "]";
    77. List books = JSON.parseArray(json2, Books.class);
    78. for (Books b :books) {
    79. System.out.println(b);
    80. }
    81. }
    82. }

    gson 解析:

    1. package com.qf.test;
    2. import com.google.gson.Gson;
    3. import com.google.gson.reflect.TypeToken;
    4. import com.qf.entity.Books;
    5. import com.qf.entity.Student;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. public class Test02 {
    9. public static void main(String[] args) {
    10. //实例化Gson对象
    11. Gson g = new Gson();
    12. Student student = new Student(1001,"张珊","123456");
    13. //将对象转换为json串
    14. String s = g.toJson(student);
    15. System.out.println(s);
    16. //将json串解析为对象\
    17. Student student1 = g.fromJson(s, Student.class);
    18. System.out.println(student);
    19. List list = new ArrayList<>();
    20. list.add(new Student(1002,"李思","123"));
    21. list.add(new Student(1003,"王舞","123"));
    22. list.add(new Student(1004,"赵柳","123"));
    23. list.add(new Student(1005,"孙琦","123"));
    24. //将集合转换为json串
    25. String s1 = g.toJson(list);
    26. System.out.println(s1);
    27. //将json串解析为集合
    28. List list1=g.fromJson(s1,new TypeToken>(){}.getType());
    29. System.out.println(list1);
    30. String json2 = "[\n" +
    31. " {\n" +
    32. " date: \"Sep 18 2016\",\n" +
    33. " title: \"御剑飞仙翱于九天\",\n" +
    34. " imgSrc: \"/images/post/crab.png\",\n" +
    35. " avatar: \"/images/avatar/1.png\",\n" +
    36. " content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
    37. " reading: \"112\",\n" +
    38. " collection: \"96\",\n" +
    39. " headImgSrc: \"/images/post/crab.png\",\n" +
    40. " author: \"林白衣\",\n" +
    41. " dateTime: \"24小时前\",\n" +
    42. " detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
    43. " postId: 0,\n" +
    44. " music: {\n" +
    45. " url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
    46. " title: \"夜夜夜夜-齐秦\",\n" +
    47. " coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
    48. " }\n" +
    49. " },\n" +
    50. "\n" +
    51. "{\n" +
    52. " date: \"Sep 18 2016\",\n" +
    53. " title: \"御剑飞仙翱于九天\",\n" +
    54. " imgSrc: \"/images/post/crab.png\",\n" +
    55. " avatar: \"/images/avatar/1.png\",\n" +
    56. " content: \"金庸书的一大特点就是朝代越早武功越高,天龙的朝代算是最早的 因此天龙里面的功夫都比其他书里面的厉害,就连降龙十八掌也比射雕三步曲里面的厉害,天龙里面一阳指不是非常厉害,但是到了射雕就是相当强大的功夫了。但是后面几部书里面还是有一些奇人练的一些奇功超越了前人。\",\n" +
    57. " reading: \"112\",\n" +
    58. " collection: \"96\",\n" +
    59. " headImgSrc: \"/images/post/crab.png\",\n" +
    60. " author: \"林白衣\",\n" +
    61. " dateTime: \"24小时前\",\n" +
    62. " detail: \"菊黄蟹正肥,品尝秋之味。徐志摩把“看初花的荻芦”和“到楼外楼吃蟹”并列为秋天来杭州不能错过的风雅之事;用林妹妹的话讲是“螯封嫩玉双双满,壳凸红脂块块香”;在《世说新语》里,晋毕卓更是感叹“右手持酒杯,左手持蟹螯,拍浮酒船中,便足了一生矣。”漫漫人生长路,美食与爱岂可辜负?于是作为一个吃货,突然也很想回味一下属于我的味蕾记忆。记忆中的秋蟹,是家人的味道,弥漫着浓浓的亲情。\\n\\n是谁来自山川湖海,却囿于昼夜,厨房与爱? 是母亲,深思熟虑,聪明耐心。吃蟹前,总会拿出几件工具,煞有介事而乐此不疲。告诉我们螃蟹至寒,需要佐以姜茶以祛寒,在配备的米醋小碟里,亦添入姜丝与紫苏,前者驱寒后者增香。泡好菊花茶,岁月静好,我们静等。\",\n" +
    63. " postId: 0,\n" +
    64. " music: {\n" +
    65. " url: \"http://ws.stream.qqmusic.qq.com/C100003507bR0gDKBm.m4a?fromtag=38\",\n" +
    66. " title: \"夜夜夜夜-齐秦\",\n" +
    67. " coverImg: \"http://y.gtimg.cn/music/photo_new/T002R150x150M000001TEc6V0kjpVC.jpg?max_age=2592000\"\n" +
    68. " }\n" +
    69. " }\n" +
    70. "\n" +
    71. " \n" +
    72. " \n" +
    73. "]";
    74. List list2 =g.fromJson(json2,new TypeToken>(){}.getType());
    75. for (Books b :list2) {
    76. System.out.println(b);
    77. }
    78. }
    79. }

    二、ajax

    简介:

            ajax是一种动态网页技术

            主要用于页面的局部加载

    ajax的特点:

            局部加载:

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

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

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

            异步:

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

    ajax的使用场景:

            注册手机号验证

            直播弹幕

             百度搜索 

     案例:

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

                    get方式jsp代码:

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: 86182
    4. Date: 2022/9/8
    5. Time: 10:09
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>$Title$title>
    12. head>
    13. <body>
    14. <input type="text" id="tv_uname" onblur="cheleckName()"><span style="color: red" id="tv_sp">span>
    15. <script>
    16. function cheleckName() {
    17. var uname = document.getElementById("tv_uname").value;
    18. if (uname==null||uname==""){
    19. document.getElementById("tv_sp").innerHTML="输入不能为空";
    20. }else {
    21. //获取ajax核心对象
    22. xmlHttpRequest = new XMLHttpRequest();
    23. //设置回调函数
    24. xmlHttpRequest.onreadystatechange=callBack;
    25. //get方法 url地址
    26. var url = "userServlet?uname="+uname;
    27. //建立连接
    28. xmlHttpRequest.open("get",url,true);//第一个参数表示提交方式,第二个参数表示请求地址,第三个参数表示是否支持异步
    29. //发送请求
    30. xmlHttpRequest.send(null);//get方式提交 传递的参数已经在URL地址上拼接了
    31. }
    32. }
    33. function callBack() {
    34. //xmlHttpRequest.readyState ==4 表示与服务器建立了连接
    35. // xmlHttpRequest.status ==200 表示响应成功
    36. //判断是否连接并响应成功
    37. if (xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
    38. //获取服务器传递的标记
    39. var flag = xmlHttpRequest.responseText;
    40. //判断
    41. if (flag=="true"){
    42. document.getElementById("tv_sp").innerHTML="用户名可以使用";
    43. }else {
    44. document.getElementById("tv_sp").innerHTML="用户名不可以使用";
    45. }
    46. }
    47. }
    48. script>
    49. body>
    50. html>

                     以post方式提交的jsp页面

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: 86182
    4. Date: 2022/9/8
    5. Time: 10:09
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>$Title$title>
    12. head>
    13. <body>
    14. <input type="text" id="tv_uname" onblur="cheleckName()"><span style="color: red" id="tv_sp">span>
    15. <script>
    16. function cheleckName() {
    17. var uname = document.getElementById("tv_uname").value;
    18. if (uname==null||uname==""){
    19. document.getElementById("tv_sp").innerHTML="输入不能为空";
    20. }else {
    21. //获取ajax核心对象
    22. xmlHttpRequest = new XMLHttpRequest();
    23. //设置回调函数
    24. xmlHttpRequest.onreadystatechange=callBack;
    25. //get方法 url地址
    26. //var url = "userServlet?uname="+uname;
    27. //post方式 URL地址
    28. var url = "userServlet";
    29. //建立连接
    30. xmlHttpRequest.open("post",url,true);//第一个参数表示提交方式,第二个参数表示请求地址,第三个参数表示是否支持异步
    31. //以post方式提交必须设置请求头
    32. xmlHttpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    33. //发送请求
    34. //xmlHttpRequest.send(null);//get方式提交 传递的参数已经在URL地址上拼接了
    35. //以post方式提交 要发送参数
    36. var data = "uname="+uname;
    37. xmlHttpRequest.send(data);
    38. }
    39. }
    40. function callBack() {
    41. //xmlHttpRequest.readyState ==4 表示与服务器建立了连接
    42. // xmlHttpRequest.status ==200 表示响应成功
    43. //判断是否连接并响应成功
    44. if (xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){
    45. //获取服务器传递的标记
    46. var flag = xmlHttpRequest.responseText;
    47. //判断
    48. if (flag=="true"){
    49. document.getElementById("tv_sp").innerHTML="用户名可以使用";
    50. }else {
    51. document.getElementById("tv_sp").innerHTML="用户名不可以使用";
    52. }
    53. }
    54. }
    55. script>
    56. body>
    57. html>

            UserServlet类:

    1. package com.qf.servlet;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. import java.io.PrintWriter;
    9. @WebServlet(name = "userServlet",urlPatterns = "/userServlet")
    10. public class UserServlet extends HttpServlet {
    11. @Override
    12. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    13. //获取前端传递的参数
    14. String uname = req.getParameter("uname");
    15. //定义一个标记
    16. boolean flag = false;
    17. //模拟验证
    18. if ("admin".equals(uname)){
    19. //表示用户名已经存在 不能使用
    20. flag = false;
    21. }else {
    22. //表示用户名不存在可以使用
    23. flag = true;
    24. }
    25. //将标记返回给ajax
    26. PrintWriter writer = resp.getWriter();
    27. writer.print(flag);
    28. //刷新
    29. writer.flush();
    30. //关闭资源
    31. writer.close();
    32. }
    33. }

    使用jquery方式实现:

            url ==>表示请求路径

            type==>表示提交方式

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

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

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

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

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: 86182
    4. Date: 2022/9/8
    5. Time: 16:26
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.min.js">script>
    13. head>
    14. <body>
    15. <input type="text" id="tv_uname"><span style="color: red" id="tv_sp">span>
    16. <script>
    17. // 使用jquery方式实现ajax
    18. /*$("#tv_uname").blur(function () {
    19. var uname = $("#tv_uname").val();
    20. if (uname==null||uname==""){
    21. $("#tv_sp").html("不能为空");
    22. }else {
    23. $.ajax({
    24. "url":"userServlet",
    25. "type":"post",
    26. "data":{"uname":uname},
    27. "dataType":"text",
    28. "success":function (data) {
    29. if (data=="true"){
    30. $("#tv_sp").html("可以使用");
    31. }else {
    32. $("#tv_sp").html("不可以使用");
    33. }
    34. },
    35. "error":function () {
    36. alert("请求失败");
    37. }
    38. });
    39. }
    40. })*/
    41. //简化jquery方式实现
    42. $("#tv_uname").blur(function () {
    43. var uname = $("#tv_uname").val();
    44. if (uname==null||uname==""){
    45. $("#tv_sp").html("不能为空");
    46. }else {
    47. $.post("userServlet",{"uname":uname},function (data) {
    48. if (data=="true"){
    49. $("#tv_sp").html("可以使用");
    50. }else {
    51. $("#tv_sp").html("不可以使用");
    52. }
    53. },"text")
    54. }
    55. })
    56. script>
    57. body>
    58. html>

     案例:

            需求:动态填充table  和 ul

            代码:

                    jsp

    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: 86182
    4. Date: 2022/9/8
    5. Time: 16:02
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.min.js">script>
    13. head>
    14. <body>
    15. <table id="tv_ta" width="80%" border="1px" cellspacing="0px" cellpadding="0px" align="center">
    16. table>
    17. <ul id="tv_ul">
    18. ul>
    19. <script>
    20. function show1(){
    21. $.ajax({
    22. "url":"servlet1",
    23. "type":"post",
    24. "data":{},
    25. "dataType":"text",
    26. "success":function (data) {
    27. //将后端传递的数据转换为前端可以解析的json
    28. var jsonStr = JSON.parse(data);
    29. //定义一个变量拼接
    30. var temp = "";
    31. //循环json串
    32. $(jsonStr).each(function () {
    33. temp+="
    34. "+this+"
    35. ";
  • })
  • //将数据写入页面
  • $("#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+="";
  • temp+=""+this.sid+"";
  • temp+=""+this.sname+"";
  • temp+=""+this.spwd+"";
  • temp+=""
  • })
  • //将数据写入页面
  • $("#tv_ta").html(temp);
  • },
  • "eroor":function () {
  • alert("请求失败")
  • }
  • });
  • }
  • $(function () {
  • show1();
  • show2();
  • });
  • script>
  • body>
  • html>
  •         servlet:

    1. package com.qf.servlet;
    2. import com.alibaba.fastjson.JSON;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.annotation.WebServlet;
    5. import javax.servlet.http.HttpServlet;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import java.io.IOException;
    9. import java.io.PrintWriter;
    10. import java.util.ArrayList;
    11. import java.util.List;
    12. @WebServlet(name = "servlet1",urlPatterns = "/servlet1")
    13. public class Servlet1 extends HttpServlet {
    14. @Override
    15. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. req.setCharacterEncoding("utf-8");
    17. resp.setCharacterEncoding("utf-8");
    18. resp.setContentType("text/html;charset=utf-8");
    19. //实例化集合
    20. List list = new ArrayList<>();
    21. list.add("张珊");
    22. list.add("李思");
    23. list.add("王舞");
    24. //将集合转换为json串
    25. String s = JSON.toJSONString(list);
    26. //实例化输出流
    27. PrintWriter pw = resp.getWriter();
    28. //将json串传输给前端
    29. pw.print(s);
    30. pw.flush();
    31. pw.close();
    32. }
    33. }
    34. package com.qf.servlet;
    35. import com.alibaba.fastjson.JSON;
    36. import com.qf.entity.Student;
    37. import javax.servlet.ServletException;
    38. import javax.servlet.annotation.WebServlet;
    39. import javax.servlet.http.HttpServlet;
    40. import javax.servlet.http.HttpServletRequest;
    41. import javax.servlet.http.HttpServletResponse;
    42. import java.io.IOException;
    43. import java.io.PrintWriter;
    44. import java.util.ArrayList;
    45. import java.util.List;
    46. @WebServlet(name = "servlet2",urlPatterns = "/servlet2")
    47. public class Servlet2 extends HttpServlet {
    48. @Override
    49. protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    50. req.setCharacterEncoding("utf-8");
    51. resp.setCharacterEncoding("utf-8");
    52. resp.setContentType("text/html;charset=utf-8");
    53. //实例化集合
    54. List list = new ArrayList<>();
    55. list.add(new Student(1001,"班长","嫩老"));
    56. list.add(new Student(1002,"梁男","钓鱼老"));
    57. list.add(new Student(1003,"黑福","洗脚老"));
    58. //将集合转换为json串
    59. String s = JSON.toJSONString(list);
    60. //实例化输出流
    61. PrintWriter pw = resp.getWriter();
    62. //将json串传输给前端
    63. pw.print(s);
    64. pw.flush();
    65. pw.close();
    66. }
    67. }

  • 相关阅读:
    01.oracle介绍
    Unity开发者3D模型基础
    vscode——本地配置(C和C++环境配置)(2)
    Redis数据库安装、使用、数据类型、常用命令(详解)
    FFmpeg源码:AV_RB32宏定义分析
    【编程之路】面试必刷TOP101:动态规划(72-77,Python实现)
    帝国CMS的Sitemap网站地图生成插件下载及教程
    《Orange‘s 一个操作系统的实现》第六章
    Day727.键值数据库的基本架构 -Redis 核心技术与实战
    Vue3学习
  • 原文地址:https://blog.csdn.net/qq_53884348/article/details/126760714