zoukankan      html  css  js  c++  java
  • 会话技术Cookie、Session

    会话技术

      所谓的会话过程就是指从打开浏览器到关闭浏览器的过程。

      一次会话: 打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器。

      cookie技术:是有web服务器保存在用户浏览器(客户端)上

      session技术:是将数据保存到服务器端,session技术的实现依赖于cookie技术

    Cookie技术   (不能存中文)

      在购物网站上去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Cookie空间中, Cookie空间为此对象绑定一个唯一的标识然后以响应头方式返回给客户端,当再去购买裤子的时候会带着这个唯一标识以请求头的方式存入到Cookie空间中,同时为它绑定唯一的标识。因为Cookie域保存在自己浏览器内部,与别人互不干扰,但因为是客户端技术,所以安全性不高。具体如下图所示:

      

      发送cookie常用方法 

        1.设置cookie持久化存储时间:setMaxAge(40);单位为s/秒

        2.设置cookie携带路径:setPath("/WEB05/SendCookieServlet");  

        3.发送cookie:response.addCookie(cookie);

      获取cookie方法

        一般步骤为:

          1..获取请求中所有的cookie所在的数组

          2.遍历cookie数组取到每一个cookie对象

        例:

    1     //1.获取请求中所有的cookie所在的数组
    2         Cookie[] cookies=request.getCookies();
    3         //2.遍历cookie数组取到每一个cookie对象
    4         for(Cookie cookie:cookies){
    5             if (cookie.getName().equals("goods")) {
    6                 String value=cookie.getValue();
    7                 System.out.println(value);
    8             }
    9         }

    session技术  (可中文)

      Session技术就是另一种会话技术,也叫做服务器端技术。Session的底层也是基于Cookie的,只不过有自己的改变。

      和Cookie一样,去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Session空间中, Session空间为此对象生成一个唯一的Key值,当再去购买裤子的时候会带着这个唯一的Key值存入到Cookie空间中,同时为它绑定唯一的Key值。因为Session域同样保存在自己浏览器内部,与别人互不干扰,它相较于Cookie而言是服务器技术,较安全。具体如下图所示:
          

      Tomcat默认session超时时间为30分钟。

      Cookie域的常用方法:

        1.获取session对象:

          HttpSession session=request.getSession();

        2.通过Session来存入内容,然后来获取这指定的值,或添加指定的值

          session.setAttribute("name", "张三");

        3.获取jsessionid

          String id=session.getId();

        4.创建cookie对象替代jsessionid

          Cookie cookie=new Cookie("JSESSIONID", id);

        5.获取session域中的值

          String name=(String)session.getAttribute("name");

      应用示例:  

     1 //获取session对象
     2         HttpSession session=request.getSession();
     3         session.setAttribute("name", "张三");
     4         //获取jsessionid
     5         String id=session.getId();
     6         //创建cookie对象替代jsessionid
     7         Cookie cookie=new Cookie("JSESSIONID", id);
     8         cookie.setPath("/WEB05");
     9         cookie.setMaxAge(120);
    10         response.addCookie(cookie);
    11         response.getWriter().write(id);

    Cookie 和 Session 的区别

      cookie 数据存放在客户端,session 数据放在服务器端。

      cookie 不是很安全,别人可以分析存放在本地的cookie 并进行 cookie 欺骗 考虑到安全应当使用session。

      session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用 cookie 。

      单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

      将登陆信息等重要信息存放为 session、其他信息如果需要保留,可以放在cookie中





  • 相关阅读:
    DRF简易了解
    Restful API接口规范
    Python分页
    vue笔记(一)
    CNN实现手写数字识别
    深度学习框架Keras
    NLP自然语言处理
    深度学习框架Tensorflow
    维度的区分
    矩阵求导
  • 原文地址:https://www.cnblogs.com/zhai113/p/11856594.html
Copyright © 2011-2022 走看看