Cookies,localStorage,sessionStorage,Web SQL Database(客户端)会话存储学习

客户端(浏览器端)存储数据有诸多益处,最主要的一点是能快速访问(网页)数据。目前常见的浏览器端数据存储方法有:Cookies,Local Storage,Session Storage,IndexedDB

取值,存值,删除(用于浏览器存储客户端的访问数据)

1.Cookies

Cookies 是一种在文档内存储字符串数据最典型的方式。一般而言,cookies 会由服务端发送给客户端,客户端存储下来,然后在随后让请求中再发回给服务端。这可以用于诸如管理用户会话,追踪用户信息等事情。

Cookies 的优点

  • 能用于和服务端通信
  • 当 cookie 快要自动过期时,我们可以重新设置而不是删除

Cookies 的缺点

  • 增加了文档传输的负载
  • 只能存储少量的数据
  • 只能存储字符串
  • 潜在的 安全问题
  • 自从有 Web Storage API (Local and Session Storage),cookies 就不再被推荐用于存储数据了
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Cookies客户端读写</title>
    </head>
    <body>
         <button type="button" onclick="addCookies()">存值</button>
         <button onclick="getCookies()">取值</button>
         <button onclick="removeCookies()">删除</button>
         <script src="js/js.cookie.js" type="text/javascript" charset="utf-8"></script>
         <script type="text/javascript">
             function addCookies(){
                 Cookies.set("price","200",{expires:2});
             }
             function getCookies(){
                 var price=Cookies.get("price");
                 alert(‘价格‘+price);
             }
             function removeCookies(){
                 Cookies.remove("price");
             }
         </script>
    </body>
</html>

2.localStorage

Local Storage 是 Web Storage API 的一种类型,能在浏览器端存储键值对数据。Local Storage 因提供了更直观和安全的API来存储简单的数据,被视为替代 Cookies 的一种解决方案。

从技术上说,尽管 Local Storage 只能存储字符串,但是它也是可以存储字符串化的JSON数据。这就意味着,Local Storage 能比 Cookies 存储更复杂的数据。

localStorage对象是HTML5的客户端存储持久化数据的方案。为了能访问到同一个localStorage对象,页面必须来自同一个域名(子域名无效),使用同一种协议,在同一个端口上。

过期策略:localstorage永久存储,不过期,除非手动删除,sessionstorage在重启浏览器、关闭页面或新开页面时失效。

Local Storage 的优点

相比于Cookies:

  • 其提供了更直观地接口来存储数据
  • 更安全
  • 能存储更多数据

Local Storage 的缺点

  • 只能存储字符串数据
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>localStorage 本地存储</title>
    </head>
    <body>
        <button onclick="add()">写</button>
        <button onclick="read()">读</button>
        <button onclick="update()">修改</button>
        <button onclick="del()">删除</button>
        <script type="text/javascript">
            function add(){
                localStorage.setItem("name","平板电脑");
                localStorage["price"]=8000;
                localStorage.number=10;
            }
            function read(){
                console.log(localStorage.getItem("name"));
                console.log(localStorage["price"]);
                console.log(localStorage.number);
            }
            function update(){
                console.log(localStorage.setItem("name","笔记本电脑"));
            }
            function del(){
                localStorage.removeItem("price");
                localStorage.clear();
            }
        </script>
    </body>
</html>

3.sessionStorage

sessionStorage:浏览器关闭后其内部setItem的值会被自动删除

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>sessionStorage 本地存储</title>
    </head>
    <body>
        <button onclick="add()">添加</button>
        <button onclick="read()">获取</button>
        <button onclick="del()">删除</button>
        <button onclick="update()">修改</button>
        <span id="span1"></span>
        <h1 id="msg"></h1>
        <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            var msg=document.querySelector("#msg");

            var name=sessionStorage.getItem("name");
                $("#span1").html(name);

            function add(){
                sessionStorage.setItem("name","小米");
                sessionStorage["price"]=2000;
                sessionStorage.number=2;
            }
            function read(){

                console.log(sessionStorage.getItem("name"));
                console.log(sessionStorage["price"]);
                console.log(sessionStorage.number);

                msg.innerHTML+=sessionStorage.getItem("name")+"<br/>";
                msg.innerHTML+=sessionStorage["price"]+"<br/>";
                msg.innerHTML+=sessionStorage.number+"<br/>";
            }
            function del(){
                sessionStorage.removeItem("price");
                sessionStorage.clear();
            }
            function update(){
                sessionStorage.setItem("name","红米");
            }
        </script>
    </body>
</html>

4.Web SQL Database

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <style>
        #file1{
            width: 300px;
            height: auto;
        }
    </style>
    <body>
        <h1>Web SQL Database</h1>
        <table id="table1" border="1">
            <tr>
                <th>序号</th>
                <th>编号</th>
                <th>名称</th>
                <th>价格</th>
                <th>操作</th>
            </tr>
        </table><br />
        <fieldset id="file1">
            <legend>商品信息</legend>
            <input type="hidden" id="id" name="id" /><br />
            <label for="id">编号:</label>
            <input type="text" id="fid" name="fid" /><br />
            <label for="name">名称:</label>
            <input type="text" id="name" name="name" /><br />
            <label for="price">价格:</label>
            <input type="text" id="price" name="price" /><br /><br />
            <button onclick="insert()">添加</button>&nbsp;
            <button ondblclick="update()">更新</button>
        </fieldset>
        <h2 id="msg"></h2>
        <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            var db;

            function createfiuitsDB() { //创建/打开数据库
                db = openDatabase("fruitsDB", 1.0, "水果数据库", 1024 * 1024 * 3, function() {
                    log("创建/打开数据库成功");
                });
            }

            createfiuitsDB();
            createtable();
            select();

            function createtable() { //创建表
                db.transaction(function(tx) {
                    tx.executeSql("create table if not exists fruits(id integer primary key autoincrement,fid int not null,name text not null,price float not null)", [], function(tx, result) {
                        log("创建表成功");
                    }, function(tx, error) {
                        log("创建表失败" + error.Message);
                    });
                });
            }

            function droptable() { //删除表
                db.transaction(function(tx) {
                    tx.executeSql("drop table if exists fruits", [], function(tx, result) {
                        log("删除表成功");
                    }, function(tx, error) {
                        log("删除表失败" + error.Message);
                    });
                });
            }

            function select() {  //加载数据
                $("#table1 tr:gt(0)").remove();
                db.transaction(function(tx) {
                    tx.executeSql("select id,fid,name,price from fruits", [], function(tx, result) {
                            for(var i = 0; i < result.rows.length; i++) {
                                var tr = $("<tr/>");
                                $("<td/>").text(result.rows.item(i)["id"]).appendTo(tr);
                                $("<td/>").text(result.rows.item(i)["fid"]).appendTo(tr);
                                $("<td/>").text(result.rows.item(i)["name"]).appendTo(tr);
                                $("<td/>").text(result.rows.item(i)["price"]).appendTo(tr);
                                var del = $("<button onclick=‘del(" + result.rows.item(i)["id"] + ",this)‘ >删除</button>")
                                var edit = $("<button onclick=‘edit(" + result.rows.item(i)["id"] + ",this)‘ >编辑</button>")
                                $("<td/>").append(del).append(edit).appendTo(tr);
                                tr.appendTo("#table1");
                            }
                        },
                        function(tx, error) {
                            log(‘创建表失败‘ + error.message);
                        });
                });
            }

            function edit(id) {   //编辑数据
                db.transaction(function(tx) {
                    tx.executeSql("select id,fid,name,price from fruits where id=?", [id],function(tx, result) {
                            $("#fid").val(result.rows.item(0)["fid"]);
                            $("#name").val(result.rows.item(0)["name"]);
                            $("#price").val(result.rows.item(0)["price"]);
                            $("#id").val(result.rows.item(0)["id"]);
                        },
                        function(tx, error) {
                            log(‘编辑失败‘ + error.message);
                        });
                });
                select();
            }

            function insert() { //添加数据
                var f = document.getElementById("fid").value;
                var n = document.getElementById("name").value;
                var p = document.getElementById("price").value;
                db.transaction(function(tx) {
                    tx.executeSql("insert into fruits(fid,name,price) values(?,?,?)", [f, n, p], function(tx, result) {
                        log("添加成功");
                    }, function(tx, error) {
                        log("添加失败" + error.Message);
                    });
                });
                select();
            }

            function update() { //更新数据
                var i = document.getElementById("id").value;
                var f = document.getElementById("fid").value;
                var n = document.getElementById("name").value;
                var p = document.getElementById("price").value;
                db.transaction(function(tx) {
                    tx.executeSql("update fruits set fid=?,name=?,price=? where id=?", [f,n,p,i], function(tx, result) {
                        log("修改成功");
                    }, function(tx, error) {
                        log("修改失败" + error.Message);
                    });
                });
                select();
            }

            function del(id, link) { //删除数据
                db.transaction(function(tx) {
                    tx.executeSql("delete from fruits where id=?", [id],function(tx, result) {
                            $(link).closest("tr").remove();
                            log(‘删除成功‘);
                        },
                        function(tx, error) {
                            log(‘删除失败‘ + error.message);
                        });
                });
            }

            function log(info) {
                $("#msg")[0].innerHTML += info + "<br/>";
            }
        </script>
    </body>
</html>

原文地址:https://www.cnblogs.com/liangyaofeng/p/10070112.html

时间: 2024-11-10 08:20:14

Cookies,localStorage,sessionStorage,Web SQL Database(客户端)会话存储学习的相关文章

(转)HTML5开发学习(3):本地存储之Web Sql Database

原文:http://www.cnblogs.com/xumingxiang/archive/2012/03/25/2416386.html HTML5开发学习(3):本地存储之Web Sql Database(附源码) Posted on 2012-03-25 14:03 祥叔 阅读(0) 评论(0)  编辑 收藏 接着上一篇,这节介绍Html5 本地存储中的一个很重要的概念--Web Sql Database ,正因为本人觉得这个很重要,所有独立出来重点介绍.即时你完全没听说过这个概念,望文生

《Javascript权威指南》学习笔记之十八:BOM新成就(1)--客户端存储数据(Web SQL DataBase实现)

使用本地存储和会话存储可以实现简单的对象持久化,可以对简单的键值对或对象进行存储.但是,对于比较复杂的关系数据进行处理时,就要用Web SQL Database.浏览器对Web SQL Database的支持情况如图: 一.如何使用Web SQL Database <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

web离线应用 Web SQL Database

web sql database 是html5废弃的一个新特性,它提供了基本的关系数据库功能,使用 `SQL` 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite 主要核心api有3个 openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象 Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned

HTML5移动开发之路(20)——HTML5 Web SQL Database

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(20)--HTML5 Web SQL Database 一.Web Database介绍 WebSQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持WebSQL Database WebSQL数据库有三个核心方法: 1)打开数据库openDatabase()方法: 此方法创建数

前端存储之Web Sql Database

前言 在上一篇前端存储之indexedDB中说到,我们项目组要搞一个前后端分离的项目,要求在前端实现存储,我们首先找到了indexedDB,而我们研究了一段时间的indexedDB后,发现它并不是很适合我们的项目,原因文章后面会讲到,所以我们就继续找,于是我们就找到了Web Sql Database,发现这个前端数据库是比较适合我们的项目的,于是果断转投Web Sql Database的怀抱,找存储工具跟穿鞋一个道理,不在乎多炫酷,合适才是王道,要是因为不合适导致磨脚是走不长远的,既然找到了合适

html5 初试 Web SQL Database

Web SQL Database API不包含在html5规范中,它是一个独立的规范,它引入了一套使用 SQL 操作客户端数据库的 API.所有现代浏览器都支持此API.它使用的SQL是SQLite . html5 中使用 Local and session storage 本地存储非常的方便,键值对方式虽说是使用方便,但对一些大量的数据结构处理就力有不及了,而Web SQL Database正适合这种类型的数据存储. Web SQL Database 是异步的. 连接/创建Database:

HTML5教程之html 5 本地数据库(Web Sql Database)

HTML5的Web SQL Databases(html5 本地数据库)的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTML 5的Web SQL Database API:openDatabase.transaction.executeSql. Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流

HTML5本地存储——Web SQL Database

在HTML5 WebStorage介绍了html5本地存储的Local Storage和Session Storage,这两个是以键值对存储的解决方案,存储少量数据结构很有用,但是对于大量结构化数据就无能为力了,灵活大不够强大. Web SQL Database 我们经常在数据库中处理大量结构化数据,html5引入Web SQL Database概念,它使用 SQL 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite,悲剧正是产生于此,Web SQL Data

html 5 本地数据库(Web Sql Database)核心方法

Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Opera等主流浏览器都已经支持Web SQL Database.HTML5的Web SQL Databases的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的.今天,我们一起来了解HTML 5的Web SQL Database API. 下面将一一将介绍怎样创建打开数据库,创建表,添加