15.Ajax
一、Ajax
1.概念:ASynchronous JvaScript And XML 异步的JavaScript和XML
(1)异步和同步:客户端和服务器端相互通信的基础上
同步:客户端必须等待服务器端的响应,在等待的期间客户端不能做其他的操作
异步:客户端不需要等待服务器端的响应,在服务器处理请求的过程中,客户端可以进行其他的操作
2.实现方式
(1)原生JS实现方式(了解)
(2)JQuery实现方式
$.ajax()
语法:$.ajax({键值对});
//使用$.ajax()发送请求
$.ajax({
url:"ajaxServlet",//请求路径
type:"post",//请求方式
//data:"name=Tom&age=23",//请求参数
data:{"name":"Tom","age":23},
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错了...")
},//表示如果请求错误响应出现错,会执行的函数
dataType:"text"//设置接受到相应数据的格式
});
$.get()
发送get请求
语法:$.get(url,[data],[callback],[type])
url:请求路径
data:请参数
callback:回调函数
type:响应结果的类型
function fun() {
//使用$.get()发送请求
$.get("ajaxServlet",{name:"rose"},function (data) {
alert(data);
},"text");
}
$.post()
发送post请求
//使用$.post()发送请求
$.post("ajaxServlet",{name:"rose"},function (data) {
alert(data);
},"text");
二、JSON
1.感念:JavaScript Object Notation JavaScript对象表示法
json现在多用于存储和交换文本信息的语法
进行数据传输
json比xml文件更小、更方便、传输效率更高
2.语法
(1)基本规则
数据在名称/键值对中:json数据集是由键值对构成的
键用引号(单双)都行引起来,也可以不用使用引号;值的取值类型:数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true或false) 数组(在方括号中){"persons":[{}],{}} 对象(在花括号中){"name":"张三","age":23,"gender":"男","address":{"province":"扬州"....}}; null
数据由逗号分隔:多个键值对有逗号分隔
花括号保存对象:使用{}定义json格式
方括号保存数组:[ ]
(2)获取数据
json对象.键名
json对象["键名"]
数组对象[索引]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
//1.定义基本格式
var person={"name":"张三",age:23,'gender':true};
var ps=[
{"name":"张三",age:23,'gender':true},
{"name":"李四",age:18,'gender':true},
{"name":"王五",age:20,'gender':false}
];
//获取person对象中所有的键和值
//for in 循环
/*for ( var key in person){
//alert(key+":"+person.key);
alert(key+":"+person[key]);
}*/
//获取ps中的所有值
for (var i=0;i<ps.length;i++){
var p=ps[i];
for (var key in p){
alert(key+":"+p[key]);
}
}
</script>
</head>
<body>
</body>
</html>
JSON解析器:Jsonlib,Gson,fastjson,Jackson
3.JSON数据和Java对象的相互转换
(1)JSON转为Java对象
使用步骤
导入jackson jar包
创建Jackson核心对象 ObjectMapper
调用 ObjectMapper的相关方法进行转换
readValue(json字符串数据,Class)
(2)Java对象转为JSON
使用步骤
导入jackson jar包
创建Jackson核心对象 ObjectMapper
调用 ObjectMapper的相关方法进行转换
/**
* 转换方法:writeValue(参数1,obj):
* 参数1:
* File:将obj对象转换为JSON字符串,并保存到指定文件中
* Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
* OutputStream:将对象转为json字符串,并将json数据填充到字节输出流中
* writeValueAsString(obj):将对象转为json字符串
*/
注解:@JsonIgnore:排除属性
@JsonFormat:属性值的格式化
(3)复杂的Java对象转换
list
map
response.setContentType("application/json;charset=UTF-8");
三、redis(一款数据库软件)
1.概念
redis是一款高性能的NOSQL系列的非关系性的数据库
2.下载安装
(1)官网:https://redis.io
(2)中文网:https://www.redis.net.cn
(3)解压可以直接使用
redis.windows.conf:配置文件
redis-cli.exe:redis的客户端
redis-server.exe:redis的服务器端
3.命令操作
(1)redis数据结构
redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
(2)6
(3)通用命令: keys *:查询所有的键
type key:查看value数据类型
del key:删除指定的键和值
4.持久化操作
(1)redis是一个内存数据库,当服务器重启,数据会丢失,将redis内存中的数据持久化保存到硬盘中
(2)redis持久化机制:
RDB:默认方式,不需要进行配置
在一定的间隔时间中,检测key的变化情况,然后持久化数据
save 900 1
save 300 10
save 60 10000
重新启动redis并指定配置文件名称
AOF:日志记录的方式,可以记录每一条命令的操作,可以每一次命令操作后,持久化数据
编辑redis.windows.conf文件
appendonly yes (默认为no,关闭aof,需要开启)
子主题 2
5.使用Java客户端操作redis
6.redis支持的键值数据类型
(1)字符串类型 String
存储:set key value
获取:get key
删除:del key
(2)哈希表类型 hash:map格式
存储:hset key field value
获取:hget key field:获取指定的field对应的值
hgetall key:获取所有的field和value
删除:hdel key field
(3)列表类型 list :linkedlist格式
可以添加一个元素到列表的头部或尾部 左(lpush) 右(rpush)
存储:lpush key value; rpush key value
获取:lrange key start end :范围获取 lrange key 0 -1
删除:lpop key:删除列表最左边元素,并将元素返回
rpop key:删除列表最右边元素,并将元素返回
(4)集合类型 set :hashset (不允许重复元素)
存储:sadd key value
获取:smembers key:获取set计集合中所有元素
删除:srem key value::删除set集合中的指定元素
(5)有序集合类型 sortedset(不允许重复,且元素有序)
存储:zadd key score value:
获取:zrange key start end
删除:zrem key value
7.redis应用场景
缓存
任务队列
应用排行榜
网站访问统计
8.cmd启动redis:redis-server.exe redis.windows.conf
四、Jedis
1.概念:一款Java操作redis数据库工具
2.使用
(1)下载jedis的jar包
(2)使用
Jedis jedis = new Jedis("localhost", 6379);//默认为此参数
jedis.setex("activecode",20,"hello");//将该键值对存入redis,并且在20秒后删除
3.Jedis操作各种redis中的数据结构
(1)字符串类型 String
存储:set key value
获取:get key
删除:del key
(2)哈希表类型 hash:map格式
存储:hset key field value
获取:hget key field:获取指定的field对应的值
hgetall key:获取所有的field和value
删除:hdel key field
(3)列表类型 list :linkedlist格式
可以添加一个元素到列表的头部或尾部 左(lpush) 右(rpush)
存储:lpush key value; rpush key value
获取:lrange key start end :范围获取 lrange key 0 -1
删除:lpop key:删除列表最左边元素,并将元素返回
rpop key:删除列表最右边元素,并将元素返回
(4)集合类型 set :hashset (不允许重复元素)
存储:sadd key value
获取:smembers key:获取set计集合中所有元素
删除:srem key value::删除set集合中的指定元素
(5)有序集合类型 sortedset(不允许重复,且元素有序)
存储:zadd key score value:
获取:zrange key start end
删除:zrem key value
4.Jedis连接池:JedisPool
(1)使用
创建JedisPool连接池对象
调用方法getResource()方法获取Jedis连接
(2)注意事项
数据库数据一旦改变则需要更新缓存
数据库的表执行 增删改的相关操作,需要将redis缓存数据情况,再存入
在service对应的增删改方法中,将redis数据删除
五、Maven
1.功能
(1)maven工程对jar包的管理过程
(2)依赖管理3,4
(1)一键构建2
2.maven:命令(默认生命周期)
(1)mvn compile:编译java主要代码
(2)mvn test:测试(编译src/main/java代码和测试代码)
(3)mvn package :打包
(4)mvn install :安装
(5)mvn deploy:发布(需要先进行配置)
(6)mvn clean:清除项目编译信息(清理生命周期)
站点生命周期不经常使用
3.项目对象模型(POM).xml
(1)项目自身信息
(2)项目运行所需要的jar包信息
(3)项目运行环境信息,比如jdk,tomcat
4.依赖管理模型(Dependemcy)仓库
(1)公司组织名称:<groupld>javax.servlet.jsp</groupld>
(2)项目名:<artifactld>jsp-api</artifactld>
(3)版本号:<version>2.0</version>
5.idea集成maven
依赖范围
compile:编译、测试、运行是有效:spring-core
test:测试时有效:Junit
provided:编译、测试有效:servlet-api
runtime:测试、运行时有效:JDBC驱动
system:对于编译、测试有效:本地的,Maven仓库之外的类库