首页 > 其他 > 详细

cookie与Session

时间:2019-04-07 16:08:36      阅读:113      评论:0      收藏:0      [点我收藏+]

1. 会话技术

什么是会话

用户开一个浏览器,- 点击多个超链接,访问服务器多个web资源。然后关闭浏览器,整个过程称之为一个会话。

和打电话一样,电话接收,开始会话,电话 挂断,结束会话。

会话技术解决什么问题

  • 保持各个客户端自己的数据
  • 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,程序要想办法为每个用户保存这些数据。

2.1 创建Cookie

Cookie cookie = new Cookie(String cookieName, String cookieValue);
  • cookie会以响应头的形式发送给客户端
  • Cookie只能存储非中文的字符串

2.2 向客户端发送cookie

response.addCookie(cookie名称)

2.3 访问

  • 第一次访问时, 请求头当中没有cookie
  • 第一次访问时, 响应当中会看到set-cookie

  • 再一次访问时, 请求头当中就能够看到cookie信息
  • 访问服务器的任何资源,一般情况下都会把cookie带去过

2.4 Cookie默认存储时间

  • 默认cookie的会话级别
    • 打开浏览器,关闭浏览器为一次会话
    • 如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭,cookie信息销毁

设置Cookie在客户端的存储时间

cookie.setMaxAge(int seconds);
  • 设置的时间为秒
  • 如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里
  • 过期会自动删除

2.5 设置Cookie的携带路径

  • 访问某一个资源时,如果每一外资源都携带cookie信息,会影响传输速度。
  • 如果不设置携带路径,默认情况下会在访问创建cookie的web资源相同的路径,都携带cookie信息。
  • 在myxq/CookieServlet下创建的cookie

技术分享图片

  • 在myxq/下的index.jsp访问时会携带cookie

技术分享图片

  • 不是在myxq下,不会携带cookie

技术分享图片

设置携带路径

cookie.setPath(String path);
  • cookie.setPath(“/CookiePro/cookieServlet”);
    • 只有访问cookieServlet才携带cookie信息
  • cookie.setPath(“/CookiePro”);
    • 访问指定的工程时, 都会携带cookie信息
  • cookie.setPath(“/”);
    • 访问服务器下部署的所有工程时都会携带cookie

2.6 删除Cookie

  • 如果想删除客户端的已经存储的cookie信息
  • 使用同名同路径的持久化时间为0的cookie进行覆盖即可

通过Request对象的 getCookies() 方法,获取的是所有的cookie,要进行遍历,找出自己名称的那一个。

示例代码

技术分享图片

需求

访问时,显示上次的登录时间

步骤

  1. 第一次访问时,获取当前的时间,并把它写到cookie当中,响应给浏览器
  2. 第一次访问,告诉用户是第一次访问
  3. 用户下次访问时,获取用户携带的cookie,把日期在浏览器当中显示,记录最新的cookie

示例代码

技术分享图片

cookie与Session

原文:https://www.cnblogs.com/xzh0717/p/10665662.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!