会话技术(session technology)

本文详细介绍了会话技术(session)和Cookie的工作原理、实现方式及注意事项,包括session的存储、销毁、细节和Cookie的创建、使用、持久化等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话技术(session technology)
* context
代表整个web项目
* request&response
一次请求会话的有效范围
* session&cookie
用于多次的请求,两者一个存在于服务器,一个存在于客户端,前者的安全性更高


一、session(服务器端的会话技术)

1.session的原理:session是依赖于cookie的

1.1 当第一次请求服务器时,在服务器中获取session对象。获取一个新的session对象向对象中存储数据
1.2 当服务器作出响应时,会将刚才的session对象的id通过set-cookie头 发送到客户端
1.3 客户端浏览器接受到响应头,会将jsessionid=xxx存储到浏览器中
1.4 当客户端第二次请求服务器端时,会通过cookie请求头卸载带这个jsessionid=xxx
1.5 服务器获取到这个请求头(cookie),会根据id查找是否有这个对应的session对象。
* 有:第N次 N>1
* 没有:第一次来

2.代码

//获取session
    HttpSession session = request.getSession();
    //使用session
        //1.存储数据
        session.setAttribute();
        //2.使用在数据
        session.getAttribute();

3.session细节

  1. 当客户端关闭再打开时,两次打开的是不同的session
  2. 当服务器正常关闭再打开时,两次打开的是同一个session
  3. 对象的销毁,在xml中默认30min(可以改),用invalidate()方法可以自杀
  4. 如果客户端禁用了Cookie,要通过URL重写来解决问题;

二、Cookie(客户端会话技术)

1. 原理

  1. 客户端请求信息resquest
  2. 服务器给客户端response,通知客户端存储cookie
  3. 客户端存住cookie,下次访问时,把Cookie用请求头发给服务器>4. 服务器根据Cookie的信息发送相关的信息
    cookie原理图

2. 代码实现

  1. 创建Cookie
//创建对象
Cookie cookie = new Cookie("name","value");
//通知客户端存储对象
response.addCookie(cookie);
  1. 使用Cookie
//1.获取Cookie
ookie[] cs = request.getCookies();
//2.遍历
if(cs!=null){
    for(Cookie c :cs){
    //获取cookie的名称
        String name= cookie.getName();
        //根据名称的不同,时行不同的处理
        if("zhangsan".equals(name)){
            System.out.print(name+"..."+cookie.getValue();
        }
    }
}

3. 细节

  • Cookie的持久化

    • setMaxAge()
      • 正数,保存在硬盘中的时间
      • 负数,保存在内存中
      • 零 ,立刻删除该Cookie
  • 存储中文

    • 发送时URL编
      name = URLEncoder.encode(name, "utf-8");
    • 获取后URL解码
      value = URLDecoder.decode(value, "utf-8");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值