Java学习之文件io流篇

Posted nice_0e3

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习之文件io流篇相关的知识,希望对你有一定的参考价值。

Cookie

 

什么是Cookie?

cookie存在的原由和cookie常识

原由

常识

cookie的创建、读取、修改、删除

创建

读取

修改

删除

cookie字符串

cookie域和路径

cookie实现域之间的访问

cookie封装

 

 

 

什么是Cookie?

 

cookie存在的原由和cookie常识

原由

HTTP请求是无状态的,服务器不能判别两次请求是否来源于同一用户,而为了提高性能,W3C使用cookie和session的方式解决这个问题。用cookie来记录客户端用户信息,比如登陆账号密码记录,购物搜索记录等等,提高了用户体验。

 

常识

cookie一般是在服务器端创建的(服务器端发送创建cookie的指令,将要创建的cookie信息封装在HTTP请求的Header里),客户端接收到Response后会解读Header里的内容,读取的Set-Cookie指令获取其内cookie信息,设置cookie。当客户端再次请求服务器时会带着那些还存活的cookie,去访问服务器。如果cookie很多,会增加客户端与服务器的数据传输量(这是session产生的原因)。

cookie是HTTP协议头中的一个字段,虽然HTTP协议本身对这个字段没有多少限制,但是cookie最终还是存在浏览器里,所有不同的浏览器对cookie的存储都有一些限制。

cookie超时后浏览器会自动清除cookie。

 

cookie的创建、读取、修改、删除

JavaScrit使用document.cookie属性来创建、读取和删除cookie

创建

document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

 

读取

var x = document.cookie;

document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value; cookie2=value; cookie3=value;

 

修改

javascript 中,修改 cookie 类似于创建 cookie,如下所示:

document.cookie="username=John Smith; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";

旧得cookie将会被覆盖。

 

删除

您只需要设置 expires 参数为以前的时间即可,如下所示,设置为 Thu, 01 Jan 1970 00:00:00 GMT:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

注意,当您删除时不必指定 cookie 的值。

 

 

cookie字符串

document.cookie 属性看起来像一个普通的文本字符串,其实它不是。

即使您在 document.cookie 中写入一个完整的 cookie 字符串, 当您重新读取该 cookie 信息时,cookie 信息是以名/值对的形式展示的。

如果您设置了新的 cookie,旧的 cookie 不会被覆盖。 新 cookie 将添加到 document.cookie 中,所以如果您重新读取document.cookie,您将获得如下所示的数据:

cookie1=value; cookie2=value;

如果您需要查找一个指定 cookie 值,您必须创建一个JavaScript 函数在 cookie 字符串中查找 cookie 值。

 

cookie域和路径

(domain):生成该cookie的域名,如domain="www.taobao.com",由于浏览器是个注意安全的环境,所以不同的域之间是不能相互访问cookie的。路径(path):该cookie是在当前的哪个路径下生成的,如path="/my_car/"。

cookie实现域之间的访问

“www.qq.com” 与 “sports.qq.com” 有公用一个关联的域名”qq.com”,我们如果想让”sports.qq.com” 下的cookie被 “www.qq.com” 访问,我们就需要用到cookie 的domain属性,并且需要把path属性设置为 “/“。例:

document.cookie = “username=Darren;path=/;domain=qq.com“

 

cookie封装

;(function (document) {
    var Cookie = function () {
    };
    Cookie.prototype = {
        /**
         * 添加一个cookie
         * @param cname cookie名
         * @param cvalue cookie值
         * @param exdays 几天后过期?
         */
        addCookie: function (cname, cvalue, exdays) {
            var d = new Date();
            d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
            var expires = "expires=" + d.toGMTString();
            document.cookie = cname + "=" + cvalue + "; " + expires;
        },
        /**
         * 获取一个cookie
         * @param cname
         * @returns {string}
         */
        getCookie: function (cname) {
            var name = cname + "=";
            var ca = document.cookie.split(‘;‘);
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i].trim();
                if (c.indexOf(name) == 0) {
                    return c.substring(name.length, c.length);
                }
            }
            return new ErrorEvent("Can‘t find the cookie. Are you sure you set it?");
        },
        /**
         * 返回所有cookie
         * @returns {string[]}
         */
        getCookies: function () {
            return document.cookie.split(‘;‘);
        },
        /**
         * 删除一个cookie
         * @param cname
         */
        delCookie: function (cname) {
            document.cookie = cname + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
        }
    };
    document.Cookie = new Cookie();
})(document);
// 5秒后过期的一个cookie,浏览器会不定时的刷新检查哪些cookie还存活,不存活的就清除。
document.Cookie.addCookie(‘kine‘,‘吉吉‘,5/(24*60*60));

以上是关于Java学习之文件io流篇的主要内容,如果未能解决你的问题,请参考以下文章

iOS学习之代码块(Block)

java学习之IO文件分割

Java学习之IO二

Java学习之IO流三

java学习之IO字符流

18 Java学习之IO概述