JavaWeb学习4

session和cookie

session

什么是会话?
用户打开浏览器,进行一系列操作,然后最终将浏览器关闭,整个过程称为一次会话。会话在服务器端也有一个对应的java对象,这个java对象叫做:session。
什么是一次请求:用户在浏览器上点击了一下,然后到页面停下来,可以粗略认为是一次请求。请求对应的服务器端的java对象是:request。
一个会话当中包含多次请求。(一次会话对应N次请求。)

  • 在java的servlet规范当中,session对应的类名:HttpSession(jarkata.servlet.http.HttpSession)
  • session机制属于B/S结构的一部分。如果使用php语言开发WEB项目,同样也是有session这种机制的。session机制实际上是一个规范。然后不同的语言对这种会话机制都有实现。
  • session对象最主要的作用是:保存会话状态。(用户登录成功了,这是一种登录成功的状态,你怎么把登录成功的状态一直保存下来呢?使用session对象可以保留会话状态。)

为什么不使用request对象保存会话状态?为什么不使用ServletContext对象保存会话状态?

  1. equest.setAttribute()存,request.getAttribute()取,ServletContext也有这个方法。request是请求域。ServletContext是应用域。
  2. request是一次请求一个对象。
  3. ServletContext对象是服务器启动的时候创建,服务器关闭的时候销毁,这个ServletContext对象只有一个。
  4. ServletContext对象的域太大。
  5. request请求域(HttpServletRequest)、session会话域(HttpSession)、application域(ServletContext)
    ○ request < session < application

三个域

  • request(对应的类名:HttpServletRequest) 请求域(请求级别的)
  • session(对应的类名:HttpSession)会话域(用户级别的)
  • application(对应的类名:ServletContext)应用域(项目级别的,所有用户共享的。)
  • 这三个域对象的大小关系 request < session < application
  • 他们三个域对象都有以下三个公共的方法:
    ■ setAttribute(向域当中绑定数据)
    ■ getAttribute(从域当中获取数据)
    ■ removeAttribute(删除域当中的数据)
  • 使用原则:尽量使用小的域
    Cookie禁用了,session还能够被找到吗?
    找不到了。每一次请求都会获取到新的session对象。
    Cookie禁用了,如何来实现session机制?
    使用URL重写机制。

cookie

  • cookie最终是保存在浏览器客户端上的。
    • 可以保存在运行内存中。(浏览器只要关闭cookie就消失了。)
      也可以保存在硬盘文件中。(永久保存。)
  • cookie作用
  • cookie和session机制其实都是为了保存会话的状态。
    cookie是将会话的状态保存在浏览器客户端上。(cookie数据存储在浏览器客户端上的。)
    session是将会话的状态保存在服务器端上。(session对象是存储在服务器上。)
  • 为什么同时存在session和cookie两种机制呢
    因为HTTP协议是无状态 无连接协议。

  • cookie失效

    • 十天过后自动失效,改密码或者在客户端浏览器上清除cookie。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值