一、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,// 第二个元素表示 valuevar cookie = cookies[i].split("=");// 判断是否是要查找的 key,对查找的 key 、value 都要做解码操作if (decodeURIComponent(cookie[0]) === key) {return decodeURIComponent(cookie[1]);}}// 没有查找到指定的 key 对应的 value 值,则返回 nullreturn 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);
}

转载于:https://www.cnblogs.com/sensenma533/p/10666865.html

COOKIE和SESSION之间的区别以及用法相关推荐

  1. 详解cookie和session之间的区别与联系

    Cookie 什么是 Cookie HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息) 每个HTTP请求都是完全独立的,服务端无法确认当前访 ...

  2. Cookie和Session简介与区别

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

  3. COOKIE与SESSION的真正区别在哪?

    COOKIE与SESSION比较 1.HTTP协议本身是无状态的. 我们上网都要靠HTTP协议传递信息.比如我们在浏览器里键入:www.sanyalanhua.com这个网址并回车,你会发现网址会变成 ...

  4. linux关机方法有哪些?有何区别_Linux关机命令大全:Linux各关机命令之间的区别和用法...

    Linux怎么用命令来进行关机/重启呢?Linux是一套免费使用和自由传播的类Unix操作系统,想使用Linux系统的关机命令必须要拿到root权限,下面给大家介绍一些Linux常用的关机命令以及各关 ...

  5. 详解linux杀死进程方法:kill、pkill、killall之间的区别及用法!

    详解linux杀死进程方法:kill.pkill.killall之间的区别及用法! kill 命令 killall 命令 pkill 命令 kill.pkill.killall之间的区别 kill 命 ...

  6. slice、splice、splite三者之间的区别与用法

    彻底搞明白slice.splice.splite三者之间的区别与用法 slice()方法: slice() 方法可从已有的数组中返回选定的元素. slice()方法可提取字符串的某个部分,并以新的字符 ...

  7. 前端页面——Cookie与Session有什么区别

    我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...

  8. 详解COOKIE和SESSION关系和区别

    (转自个推,理解起来不难) 在技术面试中,经常被问到"说说Cookie和Session的区别",大家都知道,Session是存储在服务器端的,Cookie是存储在客户端的,然而如果 ...

  9. 网络:.cookie和session原理及区别

    一.Cookie详解 (1)简介 因为HTTP协议是无状态的,即服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现.在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两饮料 ...

  10. 什么是cookie?什么是session?cookie与session有什么区别

    cookie与session的由来: 网址的发展史:1.起初网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的.比如:新闻网页,博客网页,小说... (这些网页是不需要登录后才能访问的,每 ...

最新文章

  1. DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果
  2. 【转】百度站长平台MIP引入工具使用心得
  3. linux mysql 确认命令_LINUX启动/重启/停上MYSQL的命令(详解)
  4. 雷军在线求饶:小米5G手机价格厚道,求别骂、求好评、求别带节奏
  5. 难以置信:遇到一位 a=0 也不会写的程序员
  6. python 前端开发_python和前端开发怎么抉择?
  7. iText5实现Java生成PDF文件完整版
  8. 组策略禁止自动锁定计算机,让Win10自动锁屏的设置技巧
  9. ROC评分中概念之阳性预测值/阴性预测值计算方法
  10. 【MongoDB】使用$lookup做多表关联处理
  11. Pytorch 中的 forward理解
  12. 我不是领导,用考虑数字化转型么?
  13. 知识:什么是进销存软件系统?
  14. json数组的遍历(获取属性名和属性值)
  15. 《天使与魔鬼》读后感
  16. 坚果云企业版服务器端,企业网盘服务器功能
  17. 图像搜索引擎搭建:利用VP-Tree实现以图搜图
  18. 作为技术人,我们如何画出精美的技术配图?我把我画上百张图片的经验,分享给你们
  19. 身份证验证—Java循环条件判断练习题
  20. layui发送短信验证码 (二)后台接收及校验

热门文章

  1. sencha touch 2中list控件分组排序
  2. Jquery的validate表单验证
  3. Go gorilla websocket 小试牛刀
  4. access denied (java.io.FilePermission IKAnalyzer.cfg.xml read
  5. 调试mysql语句_Mysql sql 语句调试
  6. No package ‘vte-2.91‘ found
  7. 六石编程学:由库调用没测试到,谈工作粗糙
  8. 六石管理学:人是不可以被说服的,除非自己想明白
  9. github fork自己的库,如何同步源库的更新
  10. JAVA中抓异常的办法