Cookie和Session

Cookie(浏览器端会话技术

Cookie cookie = new Cookie("lastLoginTime", String.valueOf(new Date().getTime()));
        cookie.setMaxAge(6*60*60);
        cookie.setPath(getServletContext().getContextPath()+"/");
        response.addCookie(cookie);

 1:cookie使用场景   记住用户名 上次登录时间

 2:cookie工作原理

用户请求服务器,服务器创建key-value形式的cookie 通过response.addCookie(cookie)写回浏览器

 3:cookie 的生命周期

服务器创建cookie并通过response响应头set-Cookie写回浏览器 默认cookie存活时间为浏览器关闭前,一旦浏览器关闭该cookie就从浏览器丢失,下次打开浏览器不会携带该cookie,通过设置cookie最大存活时间 ,在该时间范围内,无论浏览器是否关闭都不会丢失该cookie

 4:cookie携带规则:默认服务器创建的cookie的path为项目路径+"/"  也可自己设置 只要浏览器请求路径中包含该path就携带

 5:jsessionid是一种特殊的cookie 由服务器自动创建并写回浏览器 下次访问服务器携带该jsessionid去服务器中的session池中     查找有无该jsessionid对应的session


Session(服务端会话技术)

1 :session使用场景 保持用户登录状态 保存用户私有的数据 一个浏览器一个session

2:session工作原理:底层依赖于cookie jsessinid是一种特殊的cookie

浏览器访问服务器 
1:如果cookie带有该访问路径的sessionId 则服务器获取到该sessionId 去服务器内存的session池中查找和此   sessionId相符合的session
a 如果比对成功 直接使用该session 
b 如果比对不成功 ,就说明服务器session超时被干掉了 ,那么服务器就需要重新创建一个session sessionId还    是浏览器带来的那个   sessionId
2如果cookie没有sessionId ,则服务器创建一个session ,同时创建一个sesionId以cookie返回浏览器

3:session生命周期

1:在java代码中默认是第一次getSession的时候创建,如果访问的是jsp页面就直接创建session 将sessionId以      cookie形式返回浏览器
2:在服务器存活时间默认30分钟 在tomcat的conf下的web.xml中设置
      通过java代码设置 request.getSession().setMaxInactiveInterval(60);秒为单位
      通过java代码干掉session 退出就使用这个  request.getSession().invalidate() 浏览器携带jsssionid过来比对不到,服务器就新建session  id为携带过来的jsessionid


注意:jsessionid虽然也是cookie 是cookie那么默认浏览器关闭就要消失 下次就不会携带了 所以以cookie形式设置jsessionid存   活时间

  //继续判断是否记住用户名
                        if("ok".equals(saveName)){
                            //放入cookie
                            Cookie cookie = new Cookie("saveName",user.getName());
                            Cookie cookie1 = new Cookie("JSESSIONID",request.getSession().getId());
                            cookie1.setMaxAge(3600);
                            cookie.setMaxAge(3600);
                            response.addCookie(cookie);
                            response.addCookie(cookie1);
                           // cookie.setPath(request.getContextPath()+"/");
                        }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值