COOKIE和SESSION之间的区别以及用法

偏执的太偏执、 2021-12-24 08:23 449阅读 0赞

一、Session简单介绍

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

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

1、设置session的标记

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

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

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

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

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

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

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

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

  1. Cookie cookie=new Cookie(String name,String value):构造一个cookie对象
  2. request.getCookies():得到所有的cookie对象
  3. cookie.getName():得到此cookie对象的名字
  4. 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的知识)

  1. // key : cookie 名
  2. // value : cookie 值
  3. // options : 可选配置参数
  4. // options = {
  5. // expires : 7|new Date(), // 失效时间
  6. // path : "/", // 路径
  7. // domain : "", // 域名
  8. // secure : true // 安全连接
  9. // }
  10. function cookie(key, value, options) {
  11. /* read 读取 */
  12. // 如果没有传递 value ,则表示根据 key 读取 cookie 值
  13. if (typeof value === "undefined") { // 读取
  14. // 获取当前域下所有的 cookie,保存到 cookies 数组中
  15. var cookies = document.cookie.split("; ");
  16. // 遍历 cookies 数组中的每个元素
  17. for (var i = 0, len = cookies.length; i < len; i++) {
  18. // cookies[i] : 当前遍历到的元素,代表的是 "key=value" 意思的字符串,
  19. // 将字符串以 = 号分割返回的数组中第一个元素表示 key,
  20. // 第二个元素表示 value
  21. var cookie = cookies[i].split("=");
  22. // 判断是否是要查找的 key,对查找的 key 、value 都要做解码操作
  23. if (decodeURIComponent(cookie[0]) === key) {
  24. return decodeURIComponent(cookie[1]);
  25. }
  26. }
  27. // 没有查找到指定的 key 对应的 value 值,则返回 null
  28. return null;
  29. }
  30. /* 存入 设置 */
  31. // 设置 options 默认为空对象
  32. options = options || {};
  33. // key = value,对象 key,value 编码
  34. var cookie = encodeURIComponent(key) + "=" + encodeURIComponent(value);
  35. // 失效时间
  36. if ((typeof options.expires) !== "undefined") { // 有配置失效时间
  37. if (typeof options.expires === "number") { // 失效时间为数字
  38. var days = options.expires,
  39. t = options.expires = new Date();
  40. t.setDate(t.getDate() + days);
  41. }
  42. cookie += ";expires=" + options.expires.toUTCString();
  43. }
  44. // 路径
  45. if (typeof options.path !== "undefined")
  46. cookie += ";path=" + options.path;
  47. // 域名
  48. if (typeof options.domain !== "undefined")
  49. cookie += ";domain=" + options.domain;
  50. // 安全连接
  51. if (options.secure)
  52. cookie += ";secure";
  53. // 保存
  54. document.cookie = cookie;
  55. }
  56. // 从所有的 cookie 中删除指定的 cookie
  57. function removeCookie(key, options) {
  58. options = options || {};
  59. options.expires = -1; // 将失效时间设置为 1 天前
  60. cookie(key, "", options);
  61. }

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

发表评论

表情:
评论列表 (有 0 条评论,449人围观)

还没有评论,来说两句吧...

相关阅读