一、JSON

json用来存数据的,后端java代码返回的时json数据(json字符串或者json对象)给前端页面,前端拿到json数据以后解析json将json数据赋值到html标签中,显示到页面上。

servlet返回一个json字符串,通过ajax请求获取到这个json字符串,然后js解析json字符串赋值给标签上数据显示出来。(后端和前端交互的数据是json)

1.1json对象的创建

  1. <script>
  2. //在js中定义一个json对象
  3. //语法格式:{属性:值,属性2;值2,……}对象 []数组
  4. //"" 属性名或者字符串类型的值
  5. //键值之间用冒号:分割 多个键值对中间用逗号,隔开
  6. //存数据
  7. var person = {
  8. "name":"zzw","age":18,"sex":"男"
  9. };
  10. //取数据 对象.键
  11. console.log(person.name)
  12. console.log(person.age)
  13. console.log(person.sex)
  14. document.write(person.name)
  15. </script>

1.2json数组的创建

数据的本质还是对象

  1. <script>
  2. //json数据本身还是对象
  3. var stus = [
  4. {"sid":1,"stuname":"杨博","age":23},
  5. {"sid":2,"stuname":"杨狗","age":18},
  6. {"sid":3,"stuname":"博儿","age":10},
  7. ]
  8. console.log(stus[0])
  9. document.write(stus[2].stuname + "<br>")
  10. for(var key in stus){//遍历的sb 是数组的索引下标
  11. console.log(stus[key])
  12. document.write(stus[key].sid + " ")
  13. document.write(stus[key].stuname + " ")
  14. document.write(stus[key].age + "<br>")
  15. }
  16. //开发时servlet返回的数据是一个list集合,这个集合就是需要用json解析
  17. //标准的json数据
  18. var objs = {"code":1,"message":"xixida","data":[
  19. {"sid":1,"stuname":"杨博","age":23},
  20. {"sid":2,"stuname":"杨狗","age":18},
  21. ]}
  22. //碰到{}就是对象 就用对象.键
  23. //碰到[]就是数组 就用遍历
  24. document.write(objs.code)
  25. document.write(objs.message)
  26. document.write(objs.data + "<br><br>")
  27. for (const listKey in objs.data) {
  28. document.write(objs.data[listKey].sid + " ")
  29. document.write(objs.data[listKey].stuname + " ")
  30. document.write(objs.data[listKey].age + "<br>")
  31. }
  32. var list = objs.data
  33. for (var i = 0;i < list.length;i++) {
  34. document.write(list[i].sid + " ")
  35. document.write(list[i].stuname + " ")
  36. document.write(list[i].age + "<br>")
  37. }
  38. </script>

1.3fastjson解析

需要导包fastjson

  1. package com.qfedu.a_fastjson;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. /**
  7. * @author wodexinhuai
  8. * @create 2022-05-17-10:31
  9. */
  10. public class Demo1 {
  11. public static void main(String[] args) {
  12. //将json对象转为json字符串
  13. //1.创建对象 并 赋值
  14. Student student = new Student(1, "博儿", 23, "F", 165);
  15. //2.使用第三方jar包 fastjson.jar包 里面又两个方法toJSONString parseObject
  16. //将对象转成json字符串
  17. String s = JSON.toJSONString(student);
  18. System.out.println(s);
  19. //3.将json字符串
  20. String s1 = "{'age':100,'height':150,'id':2,'name':'大黄','sex':'公'}";
  21. Student student1 = JSON.parseObject(s1, Student.class);
  22. System.out.println(student1);
  23. //4.将集合转换成json字符串 toJSONString()
  24. ArrayList<Student> list = new ArrayList<>();
  25. list.add(new Student(1, "艾斯", 23, "F", 185));
  26. list.add(new Student(2, "萨博", 20, "F", 188));
  27. list.add(new Student(3, "路飞", 18, "F", 180));
  28. String s2 = JSON.toJSONString(list);
  29. System.out.println(s2);
  30. //5.将json数组字符串转成list集合 parseArray(字符串,反射类)
  31. String s3 = "[{\"age\":23,\"height\":185,\"id\":1,\"name\":\"艾斯\",\"sex\":\"F\"},{\"age\":20,\"height\":188,\"id\":2,\"name\":\"萨博\",\"sex\":\"F\"},{\"age\":18,\"height\":180,\"id\":3,\"name\":\"路飞\",\"sex\":\"F\"}]";
  32. List<Student> students = JSON.parseArray(s3, Student.class);
  33. for (Student student2 : students) {
  34. System.out.println(student2);
  35. }
  36. }
  37. }

1.4Jackson解析

jackson-annotation

jackson-core - 2.9.10

jackson-databind

  1. package com.qfedu.b_jackson;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.core.type.TypeReference;
  4. import com.fasterxml.jackson.databind.ObjectMapper;
  5. import com.qfedu.a_fastjson.Student;
  6. import java.io.IOException;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9. /**
  10. * @author wodexinhuai
  11. * @create 2022-05-17-11:04
  12. */
  13. public class Demo2 {
  14. public static void main(String[] args) throws IOException {
  15. Student student = new Student(1, "博儿", 23, "F", 165);
  16. //将对象转为json字符串
  17. ObjectMapper objectMapper = new ObjectMapper();
  18. String s = objectMapper.writeValueAsString(student);
  19. System.out.println(s);
  20. //将json字符串转为对象
  21. String s1 = "{\"id\":1,\"name\":\"博儿\",\"age\":23,\"sex\":\"F\",\"height\":165}";
  22. Student student1 = objectMapper.readValue(s1, Student.class);
  23. System.out.println(student1);
  24. //将礼盒转为json字符串
  25. ArrayList<Student> list = new ArrayList<>();
  26. list.add(new Student(1, "艾斯", 23, "F", 185));
  27. list.add(new Student(2, "萨博", 20, "F", 188));
  28. list.add(new Student(3, "路飞", 18, "F", 180));
  29. String s2 = objectMapper.writeValueAsString(list);
  30. System.out.println(s2);
  31. //将json字符串转为list集合对象 TypeReference是个接口 泛型是ArrayList<Student> 接口里面的方法不用重写一个{}即可
  32. String s3 = "[{\"id\":1,\"name\":\"艾斯\",\"age\":23,\"sex\":\"F\",\"height\":185},{\"id\":2,\"name\":\"萨博\",\"age\":20,\"sex\":\"F\",\"height\":188},{\"id\":3,\"name\":\"路飞\",\"age\":18,\"sex\":\"F\",\"height\":180}]";
  33. List<Student> studentList = objectMapper.readValue(s3, new TypeReference<ArrayList<Student>>() {
  34. });
  35. for (Student student2 : studentList) {
  36. System.out.println(student2);
  37. }
  38. }
  39. }

1.5浏览器处理json字符串

后端处理完json数据以后依靠ajax发送给前端页面

前端页面也得会处理json字符串和json对象

JSON.stringify()

  1. <script>
  2. var obj = {"name":"zzw","age":20};
  3. //将json对象转为json字符串
  4. var str = JSON.stringify(obj)
  5. document.write(typeof str)//string
  6. document.write(str)//{"name":"zzw","age":20}
  7. </script>

1.6json字符串转为json对象【重点】

二、AJAX

通过ajax进行请求前端资源,处理完以后,返回数据给ajax

1.网页中发生一个事件(页面加载,按钮点击)

2.由JavaScript创建XMLHttpRequest对象

3.XMLHttpReaquest对象 像web 服务器发送请求

4.服务器处理该请求

5.服务器将响应发送回网页

6.由JS读取响应

7.由JS执行正确的动作(比如更新页面)

ajax.html

  1. <body>
  2. <div id="div1"></div>
  3. <!-- 点击按钮 执行ajax方法 ajax()方法里是向servlet发送请求-->
  4. <button onclick="ajax()">点击</button>
  5. </body>
  6. <script>
  7. function ajax(){
  8. //1.使用js中ajax核心类对象
  9. var xhttp = new XMLHttpRequest()
  10. //2.建立连接 向服务器发送请求 固定写法
  11. xhttp.open("GET","AjaxServlet?username=sb&password=123");
  12. xhttp.send();
  13. //是响应处于就绪的一个事件 servlet给响应了 ,响应以后又回到ajax
  14. //告知ajax,servlet的响应已经准备就绪,ajax接下来可以操作了
  15. xhttp.onreadystatechange = function (){
  16. //==4 请求已完成且响应已就绪
  17. //==200 ok
  18. if(xhttp.readyState == 4 && xhttp.status == 200){
  19. //如果执行if语句 说明 请求和响应是正常的
  20. //开始处理响应的数据 responseText 以字符串返回响应的数据
  21. console.log()
  22. var div1 = document.getElementById("div1")
  23. div1.innerText = xhttp.responseText
  24. }
  25. }
  26. }
  27. //整个流程:ajax发送请求servlet,Servlet返回一个json数据给ajax
  28. //代码走到这一步,ajax发送请求到服务器servlet
  29. //servlet返回数据给ajax 下午讲
  30. </script>

AjaxServlet

  1. @Override
  2. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  3. //ajax请求AjaxServlet 带着数据过来的
  4. response.setContentType("text/html;charset=utf-8");
  5. request.setCharacterEncoding("utf-8");
  6. String username = request.getParameter("username");
  7. String password = request.getParameter("password");
  8. // System.out.println(username);
  9. // System.out.println(password);
  10. //服务器将响应发送到浏览器,发送的是json字符串
  11. response.getWriter().write("hello:" + username + ",密码:" + password);
  12. }

三、Jquery中的ajax的使用

Jquery是封装了js。写法变得简单