【JavaEE】cookie和session

cookie和session

  • cookie
    • 什么是 cookie
    • Servlet 中使用 cookie相应的API
  • Servlet 中使用 session 相应的 API
  • 代码示例: 实现用户登陆
  • Cookie 和 Session 的区别
  • 总结

cookie

什么是 cookie

  1. cookie的数据从哪里来?
    • 服务器返回给浏览器的
  2. cookie的数据长什么样?
    • cookie 中是键值对结构的数据, 并且这里的键值对都是程序员自己定义的
  3. cookie的作用是什么?
    • cookie就可以在浏览器这边存储一些 “临时性的数据”
    • 其中最典型的一种使用方式, 就是用来存储 “身份标识” – sessionID
  4. cookie 到哪里去?
    • cookie的内容会在下次访问该网站的时候, 自动被带到HTTP请求中
  5. cookie 怎么存?
    • 浏览器按照不同的"域名" 分别存储 cookie
    • 域名和域名之间的cookie是不能干扰的
    • cookie 存储在硬盘上的
    • cookie存储往往会有一个超时时间

Servlet 中使用 cookie相应的API

【JavaEE】cookie和session_第1张图片
【JavaEE】cookie和session_第2张图片
【JavaEE】cookie和session_第3张图片

使用示例

【JavaEE】cookie和session_第4张图片
【JavaEE】cookie和session_第5张图片

Servlet 中使用 session 相应的 API

【JavaEE】cookie和session_第6张图片
【JavaEE】cookie和session_第7张图片

代码示例: 实现用户登陆

login.html

【JavaEE】cookie和session_第8张图片

IndexServlet

【JavaEE】cookie和session_第9张图片

LoginServlet

【JavaEE】cookie和session_第10张图片


代码获取仓库

Cookie 和 Session 的区别

  • Cookie 是客户端的机制. Session 是服务器端的机制.
  • Cookie 和 Session 经常会在一起配合使用. 但是不是必须配合.
    • 完全可以用 Cookie 来保存一些数据在客户端. 这些数据不一定是用户身份信息, 也不一定是token / sessionId
    • Session 中的 token / sessionId 也不需要非得通过 Cookie / Set-Cookie 传递.

总结

  • cookie是客户端的机制, session是服务端的机制;
  • 在第一次登录的时候, 用户输入账号和密码发送服务端, 服务器此时读取HTTP请求中的cookie中的字段, 发现此时的请求没有cookie字段, 服务器就会为这个新的用户创建新的session, 建立起sessionID和session对象的联系, 并将sessionID作为Set-cookie字段填充响应HTTP, 最后将HTTP返回给客户端;
  • 客户端的游览器收到服务器的响应HTTP报文, 从中解析出来Set-cookie字段, 并将其内容保存在cookie文件中, 下次如果客户端再次访问该服务器, 浏览器就会将该域名中的cookie内容提取出来, 作为cookie字段的内容, 作为HTTP中header, 向服务器发送请求HTTP报文;
  • 此时服务器收到请求HTTP, 从cookie字段中提取到sessionID, 这样就可以找到已有的session了, 就可以进行后续的操作了

你可能感兴趣的:(#,Java,java-ee,java)