不一样的Cookie 和 Session 关联

11 篇文章 0 订阅

Cookie

Cookie是服务器通知客户端保存键值对的一种技术
客户端每次发送请求都会携带Cookie到服务器【<=4KB】
cookie的创建
获取Cookie

cookie的创建

<a href="cookieservlet?action=createCookie" target="target">cookie的创建</a>
protected void createCookie(HttpServletRequest req, HttpServletResponse resp) throws Exception {
    //1 创建cookie对象
    cookie cookie = new cookie("key2","value2");
    //2通知客户端保存cookie
    resp.addcookie(cookie);
    // 创建多个Cookie
    cookie cookie1 = new cookie("key3","value3");
    resp.addcookie(cookie1);
    //打印到屏幕上
    resp.getwriter().write("cookie创建成功");
}

请求头
在这里插入图片描述
查看Cookie
在这里插入图片描述

cookie获取

<a href="cookieservlet?action=getCookie" target="target">cookie获取</a>
protected void getcookie(HttpservletRequest req, HttpServletResponse resp) throws Exception {
    cookie[] cookies = req.getcookies();
    for (cookie cookie : cookies) {
        // getName方法返回cookie的key (名)
        // getvalue方法返回cookie的value值
        resp.getwriter().write( "cookie[" + cookie.getName() + "=" + cookie.getvalue() + "]<br/>");
    }
}

在这里插入图片描述

Cookie的生命控制

setMaxAge()

正数,表示在指定的秒数后过期
负数,表示浏览器一关,cookie就会被删除【默认值是-1,即session】
零,表示马上删除cookie

Cookie的path路径

protected void testPath(HttpServletRequest req,HttpServletResponse resp throws Exception {
    cookie cookie = new cookie("path1","path1");
    // getcontextPath( ) ===>>>>得到工程路径【只有匹配路径的才会有效】
    cookie.setPath( req.getContextPath() + "/abc" ); // ===>>>>/工程路径/abc
    resp.addcookie(cookie);
    resp.getwriter( ).write( s:"创建了一个带有Path路径的cookie");
}

================================= 一条华丽的分割线 ==================================================

Session

每个客户端都有一个session来保存用户登录后的信息

Session的创建和获取

request.getSession() 第一次调用是:创建Session会话 之后调用都是:获取前面创建好的session会话对象。

isNew();判断Session到底是不是刚创建出来的(新的)
getld()得到session的会话id值。

Session的创建和获取

protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws ServletEx(
    //创建和获取session会话对象
    Httpsession session = req.getsession();
    //判断当前session会话,是否是新创建出来的
    boolean isNew = session.isNew( );
    //获取session会话的唯一标识id
    string id = session.getId();
    resp.getwriter().write( "得到的session,它的id是:" + id + " <br />");
    resp.getwriter().write( "这个session是否是新创建的: " + isNew + " <br /> ");
}

Session域中数据的存取

req.getsession( ).setAttribute( "key1", "value1");
req.getsession().getAttribute( "key1" );

Session 生命周期

setMaxInactiveInterval(1200)

值为正数的时候,设定session的超时时长。
负数表示永不超时(极少使用)
session.invalidate() 让当前session会话马上超时无效。

// 设置Session的超时时间〈以秒为单位),超过指定的时长,Session就会被销毁。
setMaxInactiveInterval(int interval)
// 获取Session的超时时间
getMaxlnactivelnterval()
//session默认的超时时间长为30分钟,因为在Tomcat服务器的配置文件web.xml中有默认配置
// 单独设置超时时长。
session.setMaxInactivelnterval(int interval)

session超时
================================= 一条华丽的分割线 ==================================================

Cookie和Session

Session 技术,底层其实是基于cookie技术来实现的。
因为cookie创建的JSESSIONID,默认的生存时间为session,即关闭浏览器就消失
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值