乐趣区

Serlvet之cookie和session学习

HTTP 协议

Web 通信需要一种语言,就像中国人讲中文,欧美说英文,Web 使用的 HTTP 协议,也叫超文本协议。

使用 HTTP 协议的人分为两类:客户端和服务端。请求资源的角色是客户端,提供资源的是服务端。

HTTP 协议是一个很神奇的东西,他只负责说话,至于说了什么他也不知道。所以 HTTP 是无状态的协议。

会话

HTTP 是没有状态,但是人们是有记忆的,人们想让 HTTP 记住某些东西, 然后就提出几种解决方案:

  1. 隐藏域表单
  2. 重写 url
  3. cookie
  4. session

cookis 简介

cookie 是小段的文本信息(微型 redis 数据库),大小为 4kb 左右,放在浏览器的内存或者磁盘中,可以设置存活时间,浏览器关闭就消失了。除非保存在磁盘。

cookies 使用场景

  1. 记住用户名和密码
  2. 购物车
  3. 定向广告

发送 cookies

  1. 创建 cookies
  2. 设置最大时效
  3. 将 Cookie 放入到 HTTP 响应报头
Cookie c = new Cookie("userID", "a1234");
c.setMaxAge(60*60*24*7);
response.addCookie(c)

读取 Cookie

String cookieName = "userID";
Cookie[] cookies = request.getCookies();
if(cookies != null){for(Cookie cookie : cookies){if(cookieName.equals(cookie.getName())){doSomethingWith(cookie.getValue());
        }
    }
}

session

存在服务器内存的文本信息(微型 redis 数据库)

创建 session

HttpSession session = request.getSession;

HttpSession 的 API

pubic Object getAttribute(String name); // 根据 name 获取属性的值

public void setAttriute(String name, Object value); // 设置一个名称和对应的值

public void logout() // 将会话从客户端注销 

session 使用场景

  1. 购物车
  2. 验证码

cookie 与 session 区别

cookie session
存在浏览器 存在服务端
安全系数低 较安全

参考:

<< servlet 与 jsp 核心编程 >>

<< servlet 和 jsp 学习指南 >>

<< 图解 HTTP >>

退出移动版