Storage 使用


针对客户端存储讲 ——storage

1. 存储种类

1. 分为服务器端和客户端的存储
2. 服务器端:
	1. 内存存储(临时)application session request pageContext
	2. redis缓存,队列,16w次每秒,可持久化,可缓存
	3. 数据库持久化 mysql(23秒每次) mssqlserver oracle db2...
3. 客户端:
	1. cookie以文件的形式明文存储数据,不安全,最大存储单个数据4kb
	2. storage: 存储功能,相当于小型的数据库.(存储功能是在浏览器中)
	"永久保存": 只要不对浏览器进行清理,本地存储会永久保存数据.

2. localStorage/sessionStorage

2.1 概念

 使用HTML5可以在本地存储用户的浏览数据。
 
 早些时候,本地存储使用的是 cookie。但是Web存储需要更加的安全与快速。
 这些数据不会被保存在服务器,只用于用户请求网站数据情况。
 可以存储大量的数据,而不影响网站的性能。
 
 数据以 键/值 对存在,web网站的数据只允许该网页访问使用。

 只能存储String类型

 key:String
 value:Object

 1.本地存储器
 2.会话存储器(属于本地存储器)

 区别:
  localStorage 和 sessionStorage 生命周期不同
  localStorage永久有效
  sessionStorage跟会话有关
  实际开发中发现跟会话没有关系,当浏览器关闭之后,失效

2.2 api的使用

1、存储:localStorage.setItem(key,value)

如果key存在时,更新value

2、获取:localStorage.getItem(key)

如果key不存在返回null

3、删除:localStorage.removeItem(key)

一旦删除,key对应的数据将会全部删除

4、全部清除:localStorage.clear()

某些时候使用removeItem逐个删除太麻烦,可以使用clear,执行的后果是会清除所有localStorage对象保存的数据

5、遍历localStorage存储的key

.length 数据总量,例:localStorage.length

.key(index) 获取key,例:var key=localStorage.key(index);

6、存储JSON格式数据

JSON.stringify(data)  将一个对象转换成JSON格式的数据串,返回转换后的串

JSON.parse(data) 将数据解析成对象,返回解析后的对象

备注:localStorage存数的数据是不能跨浏览器共用的,一个浏览器只能读取各自浏览器的数据,储存空间5M。

3. 学生curd测试localStorage

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>学生利用localStorage curd</title>
		
		<script type="text/javascript" src="../js/jquery-3.4.1.js" ></script>
		<script>
			function save_stu() {
				if (window.Storage) {// 浏览器支持本地存储
					// 学生集合字符串
					var stuListStr = localStorage.getItem("stuList");
					// 学生json集合对象
					var stuList;
					
					// 学生为空
					if (!stuListStr) {
						stuListStr = "[]";
					} 
					// 转换json对象
					stuList = JSON.parse(stuListStr);
					// 取到学生
					var name = $("#name").val();
					var age = $("#age").val();
					var gender = $("#gender").val();
					
					var stu = {"name":name, "age":age, "gender":gender};
					
					// 修改并 保存学生!!!
					var index = $("#stuId").val();
					if (index) {
						// 修改
						stuList[index] = stu;
						$("#stuId").val("");
					} else {
						// 新增到集合
						stuList.push(stu);						
					}
					
					// 转换为字符串
					stuList = JSON.stringify(stuList);
					
					// 保存到storage
					localStorage.setItem("stuList", stuList);
					
					// 清空文本框
					$("#name").val("");
					$("#age").val("");
					$("#gender").val("");
					// 查询
					query_stu();
				}
			}
			
			function query_stu() {
				
				// 清空表格
				$("table tr:gt(0)").remove();
				
				// console.log(!localStorage.hasOwnProperty("stuList"));
				if (!localStorage.hasOwnProperty("stuList"))
					return;
				
				// 把Storage中的数据绑定到 表格
				if (window.Storage) {
					var stuListStr = localStorage.getItem("stuList");
					var stuList = JSON.parse(stuListStr);

					for (var i = 0; i < stuList.length; i++) {
						var stu = stuList[i];
						var tr = "<tr> <td>" + i + "</td> "
								+	"<td>" + stu.name + "</td> " 
								+   "<td>" + stu.age + "</td>" 
								+   "<td>" + stu.gender + "</td> "
								+   "<td>" 
								+      "<button οnclick='edit_stu(" + i + ")'>修改</button>" 
								+      "<button οnclick='del_stu(" + i + ")'>删除</button>"
								+   "</td>"
								+ " </tr>";
						$("table:eq(0)").append(tr);
					}
				}
			}
			
			function edit_stu(index) {
				// stu json object
				var stu = JSON.parse(localStorage.getItem("stuList"))[index];
				console.log(stu);
				
				// 赋值
				$("#name").val(stu.name);
				$("#age").val(stu.age);
				$("#gender").val(stu.gender);	
				
				// 赋值id 隐藏
				$("#stuId").val(index);
			}
			
			function del_stu(index) {
				var stuListStr = localStorage.getItem("stuList");
				// console.log(stuListStr);
				var stuList = JSON.parse(stuListStr);
				// 从index开始删除一位
				stuList.splice(index, 1);
				
				// 删除本地储存..
				localStorage.removeItem("stuList");
				// 再保存..
				localStorage.setItem("stuList", JSON.stringify(stuList));
					
				query_stu();
			}
		</script>
	</head>
	<body>
		
		<table>
			<tr>
				<td>id</td>
				<td>name</td>
				<td>age</td>
				<td>gender</td>
				<td>操作</td>
			</tr>
			
		</table>
		<br />
		
		<input type="hidden" id="stuId" />
		<input type="text" id="name" />
		<input type="text" id="age" />
		<input type="text" id="gender" />
		
		<br />
		<input type="button" value="保存" onclick="save_stu()" />
		<!--<input type="button" onclick="edit_stu()" />-->
		
		<input type="button" value="查询" onclick="query_stu()" />
		<input type="button" value="删除所有" onclick="localStorage.removeItem('stuList');" />
	</body>
</html>



猜你喜欢

转载自blog.csdn.net/qq_44783283/article/details/107701158