Session

Session

服务器会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中:HttpSession

  • HttpSession对象:
    • HttpSession req.getSession()
    1. Objetc getAttribute(String name)
    2. void setAttribute(Sting name, Object)
    3. void removeAttribute(String name)
  1. Session原理:依赖于Cookie
    1. 第一次获取Session没有Cookie,会在内存中创建一个新的Session对象,响应浏览器Cookie存贮JESSIONID = Session对象的id
    2. 第二次请求时,携带Cookie,服务器自动查找JESSIONID对应的Session对象
  2. 细节:
    1. 默认情况下一个Seesion对象只作用于一次会话
      • 通过自己创建Cookie添加JESSIONED并设置存活时间,可作用与多次会话
        • Cookie c = new Cookie("JESSIONED", session.getId());
    2. 服务器关闭后确保Seesion不丢失:Tomecat自动完成钝化和活化
      • 钝化:在服务器正常关闭之前,将Seesion对象序列化到硬盘上
      • 活化:在服务器启动后,将Session文件转化为内存中的Seesion对象
    3. Session销毁时间
      1. 服务器关闭
      2. session对象调用:invalidate()
      3. session默认失效:30分钟 - 可通过tomecat web.xml进行配置
  3. 特点:
    1. 用于在服务器端存储一次会话的多次请求数据
    2. 可以存储任意类型,大小的数据
    • Session 与 Cookie的区别:
      1. Session存储数据在服务器端,Cookie存储在客户端
      2. Session没有数据大小限制,Cookie有限制
      3. Session数据安全,Cookie相对不安全
案例:验证码
  1. 需求:
    1. 访问带有验证码的登录页面login.jsp
    2. 用户输入用户名,密码以及验证码
      • 如果用户名和密码错误,跳转登录页面,提示:用户名或密码错误
      • 如果验证码输入有误,跳转登录页面,提示:验证密错误
      • 全部正确,跳转到主页success.jsp,显示:用户名,欢迎您!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值