JSON及AJAX超详细笔记

}

fastJSONDemo

2.2 利用Jackson解析JSON


一个能够将Java对象序列化为JSON字符串,同样可以将JSON字符串反序列化为Java对象;方法为:readValue和writeValue;

2.2.1 Jackson的三个jar包

  • 需要在lib文件夹下导入jackjson-annotations、jackson-core、jackson-databind三个jar包;
  • jackson-core jar:流的处理,定义了底层的streaming API和实现了Json特性;
  • jackson-annotations jar:包含了标准的Jackson注解;
  • jackson-databind jar:实现了数据绑定和对象序列化,它依赖于streaming和annotations的包;

2.2.2 处理Json

Jackson提供了三种可选的Json处理方法:

  • Streaming API:是效率最高的处理方式(开销低、读写速度快,但程序编写复杂度高)
  • Tree Model:树模型是最灵活的处理方式
  • Data Binding:数据绑定是最常用的处理方式

2.2.3 Data Binding处理方式

主要使用ObjectMapper来操作Json,如果是解析就必须要有setters,且setters必须是public修饰的,否则属性的值将会为null。

如果是生成那么必须有getters,且getters必须是public修饰的。 如果属性不是private修饰,那么可以不用有getters和setters;

要点:

  • ObjectMapper mapper = new ObjectMapper(); :获取JackSon主操作类对象
  • mapper.writeValue(obj); :将传入的对象序列化为json,返回给调用者
  • mapper.writeValueAsString(Object obj):String:将java对象数组转成json,传入的对象序列化为json,返回给调用
  • mapper.readValue(jsonFile, Bean.class/Collection< Bean >);:将字符串对象转成java对象
  • mapper.readValue(jsonString . TypeReference <List< T >>):List< T >:返回List集合

特点:在java中使用jack转json时java字符串需要使用双引号,建议使用转义字符;

2.2.4 案例

package com.sx.kaka.test;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import com.fasterxml.jackson.core.JsonParseException;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.core.type.TypeReference;

import com.fasterxml.jackson.databind.JsonMappingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.sx.kaka.entity.Student;

public class JacksonTest {

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {

new JacksonTest().fromStringToJavaObj();

new JacksonTest().fromStringArrayToJavaArray();

new JacksonTest().fromJavaObjToJson();

new JacksonTest().fromJavaObjArrayToJson();

}

//将字符串对象转成java对象

public void fromStringToJavaObj() throws JsonParseException, JsonMappingException, IOException{

//编写JSON字符串

String jsonStr=“{“id”:1001,“name”:“kaka”,“sex”:“man”,“age”: 23}”;

//获取JackSon主操作类对象

ObjectMapper mapper = new ObjectMapper();

Student stu = mapper.readValue(jsonStr, Student.class);

System.out.println(stu);

}

//将字符串数组转java数组

public void fromStringArrayToJavaArray() throws JsonParseException, JsonMappingException, IOException{

//编写JSON数组字符串

String jsonStringArray = “[“kaka0”,“kaka1”,“kaka2”]”;

//获取JackSon主操作类对象

ObjectMapper mapper = new ObjectMapper();

//第一个参数:json字符串

//第二个参数:类型引用的抽象类,需要动态创建一个他的指定类型(List)对象

ArrayList readValue = mapper.readValue(jsonStringArray, new TypeReference<List>(){});

System.out.println(readValue);

}

//将java对象转成json字符串

public void fromJavaObjToJson() throws JsonProcessingException{

Student stu = new Student(1001,“kaka”,“man”,23);

//获取JackSon主操作类对象

ObjectMapper mapper = new ObjectMapper();

String string = mapper.writeValueAsString(stu);

System.out.println(string);

}

//将java对象数组转成json字符串

public void fromJavaObjArrayToJson() throws JsonProcessingException{

List list = new ArrayList<>();

for(int i = 0; i< 5; i++){

list.add(new Student(1001+i,“kaka”+i,“man”,20+i));

}

//获取JackSon主操作类对象

ObjectMapper mapper = new ObjectMapper();

String string = mapper.writeValueAsString(list);

System.out.println(string);

}

}

JackJSONDemo

2.3 浏览器(JS)处理JSON对象


  • JSON.stringify():把js对象转成json字符串的
  • JSON.parse():把json字符串转成js对象的

2.3.1 案例

JS解析JSON

list

list

在这里插入图片描述

3. AJAX

===========================================================================

AJAX全称Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),AJAX 不是新的编程语言,而是一种使用现有标准的新方法;不需要任何浏览器插件,但需要用户在允许JavaScript的浏览器上执行;

  • AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

3.1 工作原理


  1. 浏览器创建XMLHttpRequest对象;
  1. 浏览器初始化XMLHttpRequest对象;
  1. 由XMLHttpRequest对象向服务器发出请求;
  1. 浏览器接收其他用户的操作;
  1. 服务器接到请求后调用业务模型处理并给XMLHttpRequest一个响应的结果;
  1. XMLHttpRequest对象收到响应结果并进行处理;
  1. 利用修改dom模型节点特征来更新页面局部从而实现局部刷新;

3.2 Ajax应用场景


  • 运用XHTML+CSS来表达资讯;
  • 运用JavaScript操作DOM(Document Object Model)来执行动态效果;
  • 运用XML和XSLT操作资料;

3.3 Ajax编程


步骤:

  1. 创建XmlHttpRequest对象;
var xmlhttp = new XMLHttpRequest();
微软版本的:var xmlhttp = new ActiveXObject(“Microsoft.XMLHttp”);
  1. 初始化XmlHttpRequest对象;
*   **使用open方法设定请求参数;**
    open(method,url,async)
*   **使用onreadystatechange设定回调函数;**
    存储函数或者函数名,当readyState属性改变时,就会调用该函数;
    readState:存有XmlHttpRequest的状态,从0~4发生变化
    *   0:请求未初始化
    *   1:服务器连接已经建立
    *   2:请求已接收
    *   3:请求处理中
    *   4:请求已完成且响应已就绪状态为200
  1. 使用send方法发送请求;
send(String):参数为String时仅用于POST请求
  1. 在回调函数中处理响应结果,更新局部;
responseText:获取字符串形式的响应数据;
responseXML:获得XML形式的响应数据;

3.3.1 案例

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

AJAX

username:

发送Ajax

Ajax的局部展示

package com.sx.kaka.controller;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class AjaxServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“doGet…”);

String username = req.getParameter(“username”);

PrintWriter out = resp.getWriter();

//业务处理

if(username.equals(“admin”)){

out.print(“failure”);

}else{

out.print(“success”);

}

out.flush();

out.close();

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}

}

Ajax执行案例

案例

3.4 ajax实现全查


步骤:

  1. 编写链接发送ajax请求 (html)
  1. 查询数据库获取数据集合;(servlet)
  1. 将数据集合转成json字符串;(servlet)
  1. 使用打印流响应到xhr里;(servlet)
  1. 回调函数获得响应数据,将字符串转成json对象;(html)
  1. 遍历数组输出到div中(html)

3.4.1 JSP页面

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

全查

全查


3.4.2 Servlet页面

package com.sx.kaka.controller;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
age com.sx.kaka.controller;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-DL3ZN8uv-1715785930978)]

[外链图片转存中…(img-ehw8NTwW-1715785930979)]

[外链图片转存中…(img-WlskB0Go-1715785930979)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值