会话技术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中





原文地址:https://www.cnblogs.com/zhai113/p/11856594.html