web系统架构体系B/S(Browser/Server):浏览器实现优点:规范、使用方便、本身实现成本低 容易升级、便于维护缺点:没有网络,无法使用 保存数据量有限,和服务器交互频率高、耗费流量 安全
顺晟科技
2022-09-15 20:10:27
157
版权声明:未经博主授权,内容严禁转载 !
- 互联网最初的设想是作为信息展示的一种方式,信息处理是后来才逐渐出现的。
- 但是 WEB 的本质没有改变,数据依然是在服务器上完成的,在客户端显示。
- 对任何程序来讲,实现数据存储是必备的功能之一,并且在需要的视乎提供数据。
- Cookie 曾经是用来存储少量的信息,但是受限于性质,智能存储简短的字符串。
* 在 HTML5 中提供了 WEB 存储的 API ,允许在硬盘上存储数据(持久化)。
* API 可以分为两部分:
- 信息必须且只在会话过程中使用 - sessionStorage
- 信息长期保存且有用户决定时长 - localStorage
sessionStorage API 像是 cookie 的替代,会在会话期间保持数据可用。
cookie 使用浏览器作为引用,而 sessionStorage 使用单个窗口作为引用。
这就意味着,窗口关闭后,sessionStorage 就不能再是用了。
sessionStorage 和 localStorage 都将数据存储为项,采用键值对的格式。
语法
- setItem(key,value):用键值对创建项目,主键存在则更新值。
- getItem(key):根据主键获取对应的值。
- sessionStorage.setItem(\'uname\',\'wjw\');
- var uname = sessionStorage.getItem(\'uname\');
案例代码
<input type="text" id="uname" name="" value="" required>
<button type="button" onclick="saveuname()" name="button">save</button>
<script type="text/javascript">
function saveuname() {
var uname = document.getElementById("uname").value;
sessionStorage.setItem("uname",uname);
}
</script>

API 提供了更多的方法和属性操纵项,使代码变得有用。
属性
- length:返回应用程序在储存空间中积累的项的数量。
方法
- key(index):获取指定索引对应的项的主键。
案例
- var len = sessionStorage.length;
- for(var i=0;i<len;i++){
- var key = sessionStorage.key(i);
- console.log(sessionStorage.getItem(key));
- }
案例代码
<p>
<h2 id="msg"></h2>
</p>
<p>
<input type="text" id="key" required>
<input type="text" id="value" required><br>
<button type="button" onclick="save()" name="button">save</button>
<button type="button" onclick="read()" name="button">read</button>
</p>
<script type="text/javascript">
function save() {
var key = document.getElementById("key").value;
var value = document.getElementById("value").value;
sessionStorage.setItem(key,value);
}
function read() {
var key =document.getElementById("key").value;
var msg= document.getElementById("msg");
msg.innerHTML = sessionStorage.getItem(key);
}
</script>

API 提供了两种方式删除项。
- removeItem(key):根据主键删除指定项。
- clear():清空整个存储空间,删除所有项。
- sessionStorage.removeItem(\'uname\');
- sessionStorage.clear();
- console.log(sessionStorage.length);
案例代码
<div>
<h2 id="msg"></h2>
</div>
<p>
<input type="text" id="key" required>
<input type="text" id="value" required><br>
<button type="button" onclick="saveStorage()" name="button">save</button>
<button type="button" onclick="readStorage()" name="button">read</button>
<button type="button" onclick="removeStorage()" name="button">remove</button>
<button type="button" onclick="clearStorage()" name="button">clear</button>
</p>
<script type="text/javascript">
function saveStorage() {
var key = document.getElementById("key").value;
var value = document.getElementById("value").value;
sessionStorage.setItem(key,value);
}
function readStorage() {
var key =document.getElementById("key").value;
var msg= document.getElementById("msg");
msg.innerHTML = sessionStorage.getItem(key);
}
function removeStorage() {
var key =document.getElementById("key").value;
sessionStorage.removeItem(key);
}
function clearStorage() {
sessionStorage.clear();
}
</script>

- 创建登录界面,使用 sessionStorage 存储用户名。
- 在其他界面读取用户信息
login.html 文件
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=Edge,chrome=1">
<title>login</title>
<style>
.form-container {
border: 1px solid #999999;
margin: 0 auto;
width: 50%;
text-align: center;
}
</style>
</head>
<body>
<div class="form-container">
<form action="welcome.html" onsubmit="return check()">
<h2>用户登录</h2>
<p>
<label for="username">姓名</label>
<input type="text" id="username" required>
</p>
<p>
<label for="password">密码</label>
<input type="password" id="password" required>
</p>
<p>
<button type="submit">登录</button>
<button type="reset">重置</button>
</p>
</form>
<script>
function check() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
if(!sessionStorage.getItem(username)){
sessionStorage.setItem(username, password);
alert("注册成功!");
return false;
}
if(sessionStorage.getItem(username)===password){
alert("登录成功!");
sessionStorage.setItem("currentuser",username);
return true;
}else{
alert("登录失败!");
return false;
}
}
</script>
</div>
</body>
</html>
welcome.html 文件
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=Edge,chrome=1">
<title>welcome</title>
</head>
<body>
<h2 id="username"></h2>
<script>
var username = document.getElementById("username");
username.innerHTML = "欢迎你," + sessionStorage.getItem("currentuser");
</script>
</body>
</html>
在窗口会话期间临时存储数据,某些情况下可用,但是如果想摸你桌面应用,临时的数据存储系统就不够用了。
为了解决这个问题,API 提供了另一个系统,为每个来源保留了一个存储空间,并保存信息持久可用 - localStorage。
利用 localStorage,可以保存大量数据,并有用户决定信息是否保留。
localStorage 和 sessionStorage 拥有相同的接口,方法属性一致。
- localStorage 拓展了 cookie 的 4K 限制。
- localStorage 会可以将第一次请求的数据直接存储到本地,这相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽,但是这个却是只要在高版本浏览器中才支持的。
浏览器的大小不统一,并且在 IE8 以上版本才支持 localStorage 这个属性。
目前所有的浏览器中都会把 localStorage 的值类型限定为 string 类型,这个在对我们目前比较常见的 JSON 对象类型需要一些转换。
localStorage 在浏览器的隐私模式下面是不可读取的。
localStorage 本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
localStorage 不能被爬虫抓取到。
if(!window.localStorage){
console.log("浏览器不支持localStorage");
}else{
console.log("浏览器支持localStorage");
}
<script type="text/javascript">
if(!window.localStorage){
console.log("浏览器不支持localStorage");
}else{
console.log("浏览器支持localStorage");
}
</script>

var storage = window.localStorage;
// 写入 a 字段
storage["a"]=1;
// 写入 b 字段
storage.b=1;
// 写入 c 字段
storage.serItem("c",3);
console.log(typeof storage["a"]);
console.log(typeof storage["b"]);
console.log(typeof storage["c"]);
案例代码
<script type="text/javascript">
if(!window.localStorage){
console.log("浏览器不支持localStorage");
}else{
console.log("浏览器支持localStorage");
localStorage["a"] = "apple";
localStorage.b="banana";
localStorage.setItem("c",3);
}
</script>

var storage = window.localStorage;
var data = {
title : "html" ,
author : "w3c" ,
price : 10.99
};
var d = JSON.stringify(data);
storage.setItem("data",d);
console.log(storage.data);
案例代码
<script type="text/javascript">
var storage = window.localStorage;
var book = {
title:"html",
author:"w3c",
price:10.99,
};
console.log(typeof book); // 打印 book 类型
var str = JSON.stringify(book); // 转化成字符串
console.log(typeof str); // 打印 str 类型
console.log(str); // 输出字符串
storage.setItem("book",str);
</script>

var json = storage.getItem("data");
var jsonObj = JSON.parse(json);
console.log(typeof jsonObj);
案例代码
<script type="text/javascript">
var storage = window.localStorage;
var book = {
title:"html",
author:"w3c",
price:10.99,
};
console.log(typeof book); // 打印 book 类型
var str = JSON.stringify(book); // 转化成字符串
console.log(typeof str); // 打印 str 类型
console.log(str); // 输出字符串
storage.setItem("book",str);
var str1 = storage.getItem("book");
var book1 = JSON.parse(str1);
document.writeln("标题:"+book1.title);
document.writeln("<br/>");
document.writeln("作者:"+book1.author);
document.writeln("<br/>");
document.writeln("价格:"+book1.price);
document.writeln("<br/>");
</script>

07
2022-10
30
2022-09
15
2022-09
15
2022-09
15
2022-09
15
2022-09