概念: ASynchronous Javascript And XML 异步的Javascript 和 XML
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。提升了用户的体验
原生js也可以直接操作AJAX 原生JS使用ajax
JQuery实现,使用时一定要引入jquery.
- $.ajax()
语法 : $.ajax({传输键值对});
示例
$.ajax({
url:"ajaxServlet" //这里的路径是和页面一样的根目录,所以没有/,这个要看你服务器的配置路径,
//如果配置路径为urlPatterns为"/"则当前路径为“http://localhost:8080/”可以直接调用servlet
type:"GET" //请求方式 post和get
data:{"username":"hello","age":23,"gender:"男"}
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错啦...")
},//表示如果请求响应出现错误,会执行的回调函数
});
AjaxServlet.java
@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取请求参数
String username = request.getParameter("username");
//2.打印username
System.out.println(username);
//3.响应
response.getWriter().write("hello : " + username);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
- $.get():发送get请求
语法: $.get(url,[data],[callback],[type])
参数说明
url:请求路径
data:请求参数
callback:回调函数
type:响应参数类型
示例:
$.get("ajaxSerlet",{username:"zkr"},function(data){
alert(data)
},"text");
- $.post():发送post请求
语法: $.post(url,[data],[callback],[type])
参数说明
url:请求路径
data:请求参数
callback:回调函数
type:响应参数类型
示例:
$.post("ajaxSerlet",{username:"zkr"},function(data){
alert(data)
},"text");
JSON
-
概念: Javascript Object Notation Javascript对象表示法
- json现在多用于存储和交换文本信息的语法
- 进行数据的传输
- JSON 比 XML 更小、更快,更易解析。
-
语法:
1.基本规则- 数据在名称/值对中:json数据是由键值对构成的
- 键用引号(单双都行)引起来,也可以不使用引号
- 值得取值类型:
- 数字(整数或浮点数)
- 字符串(在双引号中)
- 逻辑值(true 或 false)
- 数组(在方括号中) {“persons”:[{},{}]}
- 对象(在花括号中) {“User”:{“name”:“haha”,“age”:23…}}
- null
2.获取方式
1.json对象.键名
2.json对象[“键名”]
3.数组对象[索引]
4.遍历3.示例
结果:依次弹出显示小白,小黄,80,和之后的数组每个键值对
Json转换 Json数据字符串转换为JSON对象语法JSON.parse(text,reviver)
参数说明
- text : 一个JSON数据的字符串格式
- reviver: 可以省略,一个转换结果的函数, 将为对象的每个成员调用此函数。
示例
var p='{"name":"小白","age":12,"gender":"男"}';
var ps=JSON.parse();
document.write(ps.name);
页面输出小白
JSON数据转换成字符串语法JSON.stringify(value,replace)
参数说明
- value:必选参数。被变换的JSON值,一般是对象或数组。
- replace: 可以省略,一个转换结果的函数
使用JSON解析器
解析器:Jsonlib, Gson , fastjson , jackson
这里使用jackson
1.转换步骤
①. 导入jackson的相关jar包
②. 创建Jackson核心对象 ObjectMapper
③. 调用ObjectMapper
1.调用转换方法
* writevalue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
* writevalueAsString(obj):将对象转为json字符串
示例
package text;
import com.fasterxml.jackson.databind.ObjectMapper;
import domain.People;
import domain.Person;
import org.junit.Test;
import java.io.*;
import java.util.*;
public class JacksonTest {
@Test
public void testJackson() throws Exception {
People peo = new People("黑白黑","男",30);
ObjectMapper mapper = new ObjectMapper();
mapper.writevalue(new File("d://a.txt"),peo);
mapper.writevalue(new FileWriter("d://b.txt"),peo);
String s = mapper.writevalueAsString(peo);
System.out.println(s);
}
}
测试结果:
2. 注解:
1. @JsonIgnore:排除属性。
当转换是自动忽略,直接跳过
2. @JsonFormat:属性值得格式化
* @JsonFormat(pattern = “yyyy-MM-dd”)
示例
People类中加入了Date类 birthday
package text;
import com.fasterxml.jackson.databind.ObjectMapper;
import domain.People;
import domain.Person;
import org.junit.Test;
import java.io.*;
import java.util.*;
public class JacksonTest {
@Test
public void testJackson() throws Exception {
People peo = new People("黑白黑","男",30,new Date());
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writevalueAsString(peo);
System.out.println(s);
}
}
不加 @JsonIgnore时,就变成了毫秒值
加过之后直接跳过
当加入 @JsonFormat(pattern = “yyyy-MM-dd”)时
加入时,直接加到变量的上一行
3. 复杂java对象转换
- List:数组
- Map:对象格式一致
writevalueAsString可以直接将List变为json的数组
map也是同样的,形成相应的键值对
和上方前几步操作相同
引入,创建ObjectMapper对象
调用的方法不同
调用readValue(json数据字符串,要转换的Java对象的Class)
示例
@Test
public void test5() throws Exception {
String json="{"gender":"男","name":"黑小黑","age":22,"birthday":"2021-10-06 12:13:22"}";
//中间的双引号需要用转义符号/
ObjectMapper mapper =new ObjectMapper();
People people = mapper.readValue(json, People.class);
System.out.println(people);
}
输出结果:



