一个JavaScript的框架,简化JS开发
jQuery是一个快速、简洁的JavaScript框架,设计宗旨是“write less,do more”.封装js的常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和ajax交互。
JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已。
步骤:
下载JQuery
目前有三个大版本:
1.x:兼容ie678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
2.x:不兼容ie678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
3.x:不兼容ie678,只支持最新的浏览器。除非特殊要求, 一般不会使用3.x版本的,很多老的jQuery插件不支持这个版本。
目前该版本是官方主要更新维护的版本。最新版本:3.2.1(2017年3月20日
jquery-xxx.js和jquery-xxx.min.js区别:
导入jQuery的js文件:导入min.js文件
使用 var div1=$("#div1"); alert(div1.html())
筛选具有相似特征的元素(标签)
事件绑定
// 1. 获取b1按钮
$("#b1").click(function(){
alert("abc");
});
入口函数
$(function(){
});
window.onload和$(function)的区别
样式控制:css方法
// $("#div1").css("background-color","red")
$("#div1").css("backgroundColor","pink");
语法:$("html标签名")
获取所有匹配标签名称的元素
语法:$("#id的属性值")
获取与指定id属性值匹配的元素
语法:$(".class的属性值")
获取与指定class属性值匹配的元素
语法:$("选择器1,选择器2....")
获取多个选择器选中的所有元素
语法:$("A B")
选择A元素内部的所有B元素(包括孙子)
语法:$("A > B")
选择A元素内部的所有B子元素(儿子)
语法:$("A[属性名]")
包含指定属性的选择器
语法:$("A[属性名]='值'")
包含指定属性等于指定值的选择器
语法:$("A[属性名1]='值1'[]...")
包含多个属性条件的选择器
语法::first
获得选择的元素中的第一个元素
语法::last
获取选择的元素中的最后一个元素
语法::not(selector)
不包括指定内容的元素
语法::even
偶数,从0开始计数
语法: :odd
奇数,从0开始计数
语法::eq(index)
指定索引元素
语法::gt(index)
大于指定索引元素
语法::lt(index)
小于指定索引元素
语法::header
获取标题(h1~h6) 元素,固定写法
语法::enabled
获取可用元素
语法: :disabled
获取不可用元素
语法::checked
获取单选/复选框选中的元素
:selected
获取下拉框选中的元素
attr()
获取/设置元素的属性removeAttr()
删除属性prop()
获取/设置元素的属性removeProp()
删除属性attr 和 prop区别:
- 如果操作是是元素的固有属性,建议使用prop
- 如果操作的是元素自定义的属性,建议使用attr
toggleClass(“one”): 判断如果元素对象上存在class=“one”,则将属性值one删掉;如果不存在class=“one”,添加
不管用js方式或jq方式去遍历数组,里面得到的对象都是JS对象,如果要调用JQ方式需要先转换!
注意:1.9版本 .toggle() 方法删除,jQuery Migrate(迁移)插件可以恢复此功能。
增强jquery的功能
ASynchronous JavaScript And XML 异步的JavaScript 和 XML
异步 和 同步:客户端和服务器端相互通信的基础上。
ajax:用于创建交互式网页的开发技术
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。提升用户的体验
创建核心对象
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
建立连接
xmlhttp.open("GET","/day22/ajaxServlet?username=tom",true);
发送请求
xmlhttp.send();
接收数据
xmlhttp.onreadystatechange=function()
{
// 判断readyState就绪状态
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var responseText = xmlhttp.responseText;
alert(responseText);
}
}
}
<script>
function fun() {
// 发送异步请求
// 1. 创建核心对象
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
// 2. 建立连接
/*
参数:
1. 请求方式
get :请求参数在url后拼接,send方法为空参
post: 请求参数在send方法中定义
2. 请求的URL
3. 同步或异步请求:true异步
*/
xmlhttp.open("GET","/day22/ajaxServlet?username=tom",true);
// 3. 发送请求
xmlhttp.send();
// 4. 接收并处理来自服务器的响应结果
// 获取方式:xmlhttp.responseText
// 什么时候获取?当服务器响应成功后再获取
// 当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange
xmlhttp.onreadystatechange=function()
{
// 判断readyState就绪状态
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var responseText = xmlhttp.responseText;
alert(responseText);
}
}
}
script>
$.ajax({
url:"/day22/ajaxServlet1",
type:"get", // 默认get
// data:"username=jack&age=23", // 请求参数
data:{
"username":"jack","age":23},
success:function (data) {
alert(data);
},//响应成功后的回调函数
error:function () {
alert("出错了。。。");
},
dataType:"text" // 设置接收到的相应数据的格式
});
语法: $.get(url, [data], [callback], [type])
参数:url:请求路径;data:请求参数;callback:回调函数;type:响应结果的类型
callback:发送成功时回调函数。data:待发送 Key/value 参数。type:返回内容格式,xml, html, script, json, text, _default。
语法:$.post(url, [data], [callback], [type])
Javascript Object Notation javascript对象表示法
for(var key in person){
alert(key+":"+person[key])
}
for (var i = 0; i < ps.length; i++) {
var p = ps[i];
for(var key in p){
alert(key+":"+p[key])
}
}
遍历需要注意:person[key],而不是person.key
JSON解析器:
导入jackson的相关jar包
创建Jackson核心对象 ObjectMapper
调用ObjectMapper的相关方法进行转换
转换方法:
writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串
校验用户名是否存在
服务器响应的数据,在客户端使用时,要想当做json数据格式使用。有两种解决方案:
response.setContentType("application/json;charset=utf-8");
redis是一款高性能的NOSQL系列的非关系型数据库,键值存储数据库。
not only sql,泛指菲关系型数据库
redis存储的是:key,value格式的数据,其中key都是字符串,value有5种数据结构
数据结构:
linkedlist,可以添加一个元素到列表的头部(左边)或者尾部(右边)
不允许重复元素
不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
redis是一个内存数据库,当redis服务器重启,或者电脑重启,数据会丢失。我们可以将redis内存中的数据持久化保存到硬盘的文件中。
redis持久化机制:
不需要进行配置,默认就使用这种机制
在一定的间隔时间中,检测key的变化情况,然后持久化数据
编辑redis.windows.conf文件
save 900 1
save 300 10
save 60 10000
重新启动redis服务器,并指定配置文件名称
D:\xxx\redis-2.8.9>redis-server.exe redis.windows.conf
日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
编辑redis.windwos.conf文件
appendonly no(关闭aof) --> appendonly yes (开启aof)
appendfsync everysec : 每隔一秒进行一次持久化
一款java操作redis数据库的工具
使用步骤:
下载jedis的jar包
使用
//1. 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2. 操作
jedis.set("username","zhangsan");
//3. 关闭连接
jedis.close();
可以使用setex()方法存储可以指定过期时间的 key value
jedis.setex("activecode",20,"hehe");
和redis语法都一致,后面的就不写了。
JedisPool
使用
// 创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);// 最大空闲连接
// 1. 创建jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
// 2. 获取连接
Jedis jedis = jedisPool.getResource();
// 3. 使用
jedis.set("hehe","haha");
// 4. 关闭,归还到连接池
jedis.close();
public class JedisPoolUtils {
private static JedisPool jedisPool = null;
static {
// 读取配置文件
InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties pro = new Properties();
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
// 获取数据,设置到JedisPoolConfig中
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
// 初始化
jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}
/**
* 获取连接方法
*/
public static Jedis getJedis(){
return jedisPool.getResource();
}
}
使用
// 通过连接池工具类获取
Jedis jedis = JedisPoolUtils.getJedis();
// 3. 使用
jedis.set("hello","world");
// 4. 关闭,归还到连接池
jedis.close();