一、Session简单介绍

  在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下)。因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务。

二、Cookie简单介绍

“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。

三、Session和Cookie的主要区别

1,session 在服务器端,cookie 在客户端(浏览器)
2,session 默认被存在在服务器的一个文件里(不是内存)
3,session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
4,session 可以放在 文件、数据库、或内存中都可以。
5,用户验证这种场合一般会用 session

因此,维持一个会话的核心就是客户端的唯一标识,即 session id

四、Session和Cookie的用法

Session:

1、设置session的标记

<span style="white-space:pre">        </span>//在把user对象放入session中,有了标记,这点儿很重要。
request.getSession().setAttribute("user", user);//前者是标记名字,后者是对象

2、得到session,名字必须和设置的标记名一样

<span style="white-space:pre">        </span>//得到session中的session验证码
String sessuoncode=(String)request.getSession().getAttribute("user");

3、关闭sesion与对象的关联或者直接销毁session

        request.getSession().removeAttribute("user");//删除了域中绑定的对象
// request.getSession().invalidate();//这是直接销毁session,可任选一种

注:session的缓存时间(有三种方式,建议使用默认或者实现接口,implements Serializable)

<span style="white-space:pre">    </span>//session.setMaxInactiveInterval(2);
//setMaxInactiveInterval表示2秒内不对session做出操作,自动删除session
//一般情况下,不用设置这个函数,因为getMaxInactiveInterval()的session的默认失效为1800毫秒也就是半分钟
//System.out.println(session.getMaxInactiveInterval());//打印默认session存在时间

Cookie:

response.addCookie(Cookie cookie)是将一个cookie对象传入客户端。

Cookie cookie=new Cookie(String name,String value):构造一个cookie对象

request.getCookies():得到所有的cookie对象

cookie.getName():得到此cookie对象的名字

cookie.getValue(String name):得到对应名称的cookie的值

1.在使用cookie的时候,首先要注意浏览器是否支持cookie,可以用过设置浏览器,使其支持使用cookie

2.如果要使cookie保存中文的信息,需要使用java.net.URLEncoder类的encode方法进行编码,需要使用java.net.URLDecoder的decode方法进行解码。 这种方法和String类的编码和解码类似,String的编码方法是byte[] b=str.getBytes();//这是使用本地默认的编码格式进行编码,或者是byte[] b=str.getBytes("utf-8");//这种是以utf-8的方式进行解码,也可以使用其他的类型。我们要用同一种编码格式进行解码和编码,不然有可能会出现乱码问题,这种编码和解码的方式也可以解决get方式乱码问题。

cookie的几种常见属性:document.cookie="key=value;expires=失效时间;path=路径;domain=域名;secure;(secure表安全级别),cookie以字符串的形式保存在浏览器中。

3、封装的cookie的存入,读取以及删除的函数:(这里是将信息以对象的形式存放到cookie中的,会用到JSON的知识)

// key : cookie 名
// value : cookie 值
// options : 可选配置参数
// options = {
// expires : 7|new Date(), // 失效时间
// path : "/", // 路径
// domain : "", // 域名
// secure : true // 安全连接
// }
function cookie(key, value, options) {
/* read 读取 */
// 如果没有传递 value ,则表示根据 key 读取 cookie 值
if (typeof value === "undefined") { // 读取
// 获取当前域下所有的 cookie,保存到 cookies 数组中
var cookies = document.cookie.split("; ");
// 遍历 cookies 数组中的每个元素
for (var i = 0, len = cookies.length; i < len; i++) {
// cookies[i] : 当前遍历到的元素,代表的是 "key=value" 意思的字符串,
// 将字符串以 = 号分割返回的数组中第一个元素表示 key,
// 第二个元素表示 value
var cookie = cookies[i].split("=");
// 判断是否是要查找的 key,对查找的 key 、value 都要做解码操作
if (decodeURIComponent(cookie[0]) === key) {
return decodeURIComponent(cookie[1]);
}
}
// 没有查找到指定的 key 对应的 value 值,则返回 null
return null;
} /* 存入 设置 */
// 设置 options 默认为空对象
options = options || {};
// key = value,对象 key,value 编码
var cookie = encodeURIComponent(key) + "=" + encodeURIComponent(value);
// 失效时间
if ((typeof options.expires) !== "undefined") { // 有配置失效时间
if (typeof options.expires === "number") { // 失效时间为数字
var days = options.expires,
t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
cookie += ";expires=" + options.expires.toUTCString();
}
// 路径
if (typeof options.path !== "undefined")
cookie += ";path=" + options.path;
// 域名
if (typeof options.domain !== "undefined")
cookie += ";domain=" + options.domain;
// 安全连接
if (options.secure)
cookie += ";secure"; // 保存
document.cookie = cookie;
} // 从所有的 cookie 中删除指定的 cookie
function removeCookie(key, options) {
options = options || {};
options.expires = -1; // 将失效时间设置为 1 天前
cookie(key, "", options);
}

COOKIE和SESSION之间的区别以及用法的更多相关文章

  1. sessionStorage 、localStorage 、 cookie 和session之间的区别

    四者的异同 特性 Session   Cookie localStorage sessionStorage 数据的生命期   在一定时间内保存在服务器上.当访问增多,会比较占用你服务器的性能,考虑到减 ...

  2. php 会话控制(了解cookie与session之间的区别与联系)

    相同点: 都可以在解决HTTP无状态的问题,使同一个客户端在访问网站的多次请求中,可以保存,设置信息,并且在请求事物之间建立联系. 不同点: 简单的说cookie的信息保存在客户端,session的信 ...

  3. 3、Cookie与Session之间有哪些区别或者是优缺点?

    Cookie与Session之间有哪些区别或者是优缺点? 知道了Cookie与Session,我们来做一些简单的总结:   1.Cookie可以存储在浏览器或者本地,session只能存在服务器    ...

  4. Cookie和Session简介与区别

    1.Cookie和Session简介与区别 在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 ...

  5. 牛客网Java刷题知识点之什么是cookie、什么是session、cookie和session有什么区别

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21170&query=&asc= ...

  6. Cookie 和 Session 有什么区别呢?

    Cookie 和 Session 有什么区别呢?大部分的面试者应该都可以说上一两句,比如:什么是 Cookie?什么是 Session?两者的区别等 但如果再往深入探讨的话,就慢慢有一些朋友不太了解了 ...

  7. GROUP BY,WHERE,HAVING之间的区别和用法

      GROUP BY,WHERE,HAVING之间的区别和用法 分类: Oracle学习2009-11-01 23:40 21963人阅读 评论(6) 收藏 举报 mathmanagersql数据库m ...

  8. 浅谈C++中指针和引用的区别者之间的区别和用法(转)

    指针和引用在C++中很常用,但是对于它们之间的区别很多初学者都不是太熟悉,下面来谈谈他们2者之间的区别和用法. 1.指针和引用的定义和性质区别: (1)指针:指针是一个变量,只不过这个变量存储的是一个 ...

  9. (进阶篇)浅谈COOKIE和SESSION关系和区别

    COOKIE介绍 cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 PHP,您能够创建并取回 coo ...

随机推荐

  1. Saiku去掉License验证信息以及数据备份(二十一)

    Saiku去掉License验证信息 终于还是走到了这一步,老早就在说要去掉这个License验证了,一直没做因为忙着别的.但是因为这个License还和可定义的用户数相关,限制了我们的使用,所以这里 ...

  2. Django知识总结(二)

    拾 ● 模型(M) 一 ● ORM(对象关系映射, Object Relational Mapping) 类----一张表 类的实例对象----表中的一条记录 映射关系 ①python的类名对应的SQ ...

  3. 字符串及其操作,字符的Unicode编码

    plainText=input('message:') for c in plainText: print(chr(ord(c)-3),end='') plainText=input('message ...

  4. 后台管理系统之“图片上传” --vue

    图片上传(基于vue) 相信上传图片是所有系统必备的功能吧,工作中的第一个管理系统就在上传图片的功能上卡顿了一整天. 当时用的elementUI组件,但是由于样式和设计图样式差别较大再加上原生相较好理 ...

  5. Devexpress GridControl 多选

    以前dev的多选要自己处理,一般的处理方式就是在单元格中添加checkbox控件.后来的版本中dev增加了多选的支持,只需要设置一下属性就可以了,属性如下图: 然后效果设计页面就是这个样子: 运行以后 ...

  6. OpenStack-Queens版本缓存yum源的问题

    安装OpenStack仓库出现问题 yum install centos-release-openstack-queens -y 执行 sed -i 's/$contentdir/centos/g' ...

  7. spring中基于JDK和CGLIB代理在项目的应用

    一.环境与问题 环境 spring boot的版本是1.2.1.RELEASE.JDK版本是1.7 问题 ​ A服务 PeopleService 调用B服务 HelloService ,其中B服务的方 ...

  8. Problem 4: Largest palindrome product

    A palindromic number reads the same both ways. The largest palindrome made from the product of two 2 ...

  9. 第一次作业_ChenHong1998

    我的目标 学习到软件工程的实践过程 回想一下你初入大学时对软件工程专业的畅想 当初你是如何做出选择软件工程专业的决定的? 计算机是热门专业,软件工程专业好找工作 你认为过去两年中接触到的课程是否符合你 ...

  10. 贝塞尔(Bezier) 曲线 研究

    贝塞尔曲线最近经常接触到,今天研究了一下. 原理 关于它的原理,网上有很多. 1.一阶 2.二阶 3.多阶 可以看到,多阶可以慢慢降阶为一阶贝塞尔曲线. //一阶 private Vector3 Ba ...