欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

会话Session和Cookie

程序员文章站 2024-03-20 14:28:34
...
  1. 示例项目功能
    • 注册功能:
      • 注册页面1填写信息 (填完点击下一步按钮,表单提交到servlet1页面 填写信息通过request.set存储,再返回页面2)
      • 页面2 填写信息,到servlet2再获取页面2信息及servlet1存储的信息
      • 最终结果:只能输出页面2的信息,servlet1保存的信息获取不到
      • 结论 : request数据不能共享,一次请求返回响应即结束
  2. Cookie

    http协议中,服务器发送给浏览器客户端的数据(键值对),然后浏览器会把Cookie保存起来,下一次访问服务器时把Cookie再发给服务器。Cookie代表一个会话之间的数据共享;Cookie数据大小也有限制(单个4K),不同的浏览器之间Cookie不可以共享; 会话Session和Cookie

生命周期 : 默认为本次会话,即关闭浏览器就消失

// 手动设置生命周期 [expiry表示以秒为单位的数值]
  // expiry : -1  (默认情况,和没设置相同)
  // expiry : 0   (销毁当前Cookie) 
Cookie.setMaxAge(int expiry)

// 示例保存1小时,即使关闭浏览器也会保存
Cookie.setMaxAge(60 * 60)
  1. Cookie路径 浏览器保存Cookie之后每次访问请求都会携带Cooke,当然不是携带浏览器所有Cookie.而是会根据浏览器的Cookie路径(path,此处路径绝不指客户端保存路径),访问网址短于路径则会加载到request请求中;例如:

  2. Cookie中文存取

  • 存储 : 通过URLEncoder(String)
  • 取值 : 通过URLDecoder(String)
  1. Cookie的禁用处理 存储之后,再获取一下,如果能获取到则说明没禁用,如果显示为null则说明被禁用。输出到浏览器提示用户手动开启cookie .
  2. Session(http请求会话) 相比较于cookie它周期比较短,关闭浏览器即消失;
  3. Session使用
  • 使用session默认会创建cookie(名字叫JsessionI)用来和服务器端session绑定,并且周期为一个会话内;
  • 不同的浏览器创建不同的会话,服务器端通过sessionId和浏览器端cookie保存的SessionId进行区分会话
  1. Session失效详解
    • 注销session方法 - session.invalidate()
    • session超时
      • web.xml中配置
    	<session-config>
    		<!--  设置session超时时间,单位为分钟  -->
    		<session-timeout>1</session-timeout>
        </session-config>
    
    • session是依赖cookie存在的,如果cookie被禁用,那么直接判断session是否为空就可以知道是否被禁用。

转载于:https://my.oschina.net/yolks/blog/1799574