会话技术的Cookie、Session介绍及Servlet域对象总结

会话技术的概述

  • 用户打开一个浏览器,点击多个超链接访问服务器的web资源,然后关闭浏览器,整个过程成为一次会话。
  • 每个用户和服务器进行交互过程中,产生一些各自的数据,程序想要把这些数据进行保存,就需要使用会话技术。

会话技术的Cookie、Session介绍及Servlet域对象总结

会话技术的实现原理

  • cookie:cookie是客户端技术,程序把每个用户的数据以cookie的形式存到各自的浏览器中。当用户使用浏览器再次访问服务器中的web资源的时候,就会带着各自的数据过去。这样,web资源处理的就是用户各自的数据了。
    会话技术的Cookie、Session介绍及Servlet域对象总结
  • session:session是服务器端技术,利用这个技术,服务器在运行的时候为每一个用户创建一个独享的session对象。由于session为用户浏览器独享,所有用户在访问服务器的时候,可以把各自的数据放在各自的session中,当用户再次访问服务器中的web资源时,其他web资源再从用户各自的session中取出数据为用户服务。
    会话技术的Cookie、Session介绍及Servlet域对象总结

Cookie分类

  • 默认级别的Cookie
    指没有设置有效时间的Cookie,默认的情况下只要关闭了浏览器,Cookie也会被销毁。(Cookie存在于浏览器的内存中,当关闭了浏览器Cookie就销毁了。)

  • 持久级别的Cookie
    指有有效时间的Cookie,这种Cookie的内容不是保存在浏览器的内存中,而是保存在本地硬盘上。

  • Cookie的使用细节

    • 一个cookie只用标识一种信息,至少含有一个标识该信息的名称和值;
    • 一个web站点可以给一个浏览器发送多个Cookie,一个浏览器可以存储多个web站点的Cookie;
    • 浏览器存放的cookie的大小和个数是有限制的;
    • 默认被创建的cookie是会话级别的,关闭浏览器则摧毁;
    • 需要手动删除持久性的Cookie,可以将有效时长改为0,注意:path需一致,否则无法删除。

Session概述

  • Session与cookie的区别
    • Session没有个数和大小的限制

    • 数据是保存在服务器上的(相对安全)

  • Session如何保存用户数据
    Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到Session对象。
    会话技术的Cookie、Session介绍及Servlet域对象总结
  • Session的实现原理
    是基于Cookie的,基与Cookie回写了一个Session的id。
    会话技术的Cookie、Session介绍及Servlet域对象总结
  • Session做为域对象存取数据
    • 存入:SetAttribute
    • 取出:GetAttribute
    • 移除:RemoveAttribute
    • 作用范围:一次会话。指的是用户打开浏览器访问服务器资源,到最后关闭浏览器的过程。

Servlet的数据访问范围的总结

  • Servlet域对象的总结
    • 请求范围(ServletRequest)
      • 何时创建和销毁的:请求创建,响应销毁。
      • 如何存取数据:传值类型为object。
      • 作用范围:一次请求。
    • 会话范围(HttpSession)
      • 何时创建和销毁的:服务器端第一次调用getSession()方法即创建。销毁:①Session过期,默认过期时间为30分钟;②非正常关闭服务器;③手动调用session.invalidate()。
      • 如何存取数据:传值类型为object。
      • 作用范围:一次会话。
    • 应用范围(ServletContext)
      • 何时创建和销毁的:服务器启动时创建,为每个web项目创建一个单独的ServletContext对象。销毁:服务器关闭时,或者项目从服务器中移除。
      • 如何存取数据:传值类型为object。
      • 作用范围:整个web项目。