session

session基本概念:

在这里插入图片描述
在这里插入图片描述

session的方法:

1、对象的创建:HttpSession hs=request.getSession();
2、获取jsessionid:jsessionid =hs.getId()
3、设置session属性(key是String,value是object类型):hs.setAttribute(“person”, person);
4、获取session属性:Person p=(Person)hs.getAttribute(“person”);
5、删除session属性 :hs.removeAttribute(“key”);//修改密码成功,返回登录页,显示修改密码成功,后销毁session
6、删除session:hs.invalidate();//做退出功能的时候可用
在这里插入图片描述

一个用户对应一个session
一个用户的多个请求能对应一个session,保证了同一用户不同请求的数据共享问题
解决
一个用户发起不同请求,拿到相同的对象问题
关于jsessionid
在这里插入图片描述
jsessionid =request.getSession().getId()

session存储
session:服务器存储技术(依赖cookie技术将Jsessionid携带给服务器端的session)
cookie:浏览器存储技术
作用域
一次会话(session对象存在且jsessionid不失效):浏览器开启到关闭,整个项目内有效
注意服务器不关闭,session对象不销毁
cookie作用域为一次会话,当修改cookie作用域后,(cookie每次开启浏览器携带的jsessionid还是会不一样:关闭浏览器重新打开,获取不到原来的session对象,会导致获取不到session中的内容,看下面案例)
设置cookie3天有效,login(创建session)重定向到main(获取session),main中获取session的属性Person对象,打印person对象信息 重启浏览器 原来session对象还在但cookie又带了个新的sessionid过来,匹配不上,导致第二次打印为null
综上:session作用域是一次会话
在这里插入图片描述

getSession()
1、创建session对象
2、创建cookie信息
3、将cookie信息响应到浏览器(服务器创建了Jsessionid返回给客户端,cookie将id带给浏览器的session对象)
4、如果sessionid失效,重新创session对象,将新的sessionid存放在浏览器session中
第四点的解释:
当浏览器没关闭,30分钟未操作,session失效,cookie携带的还是原来的jsessionid,可getSession()此时为浏览器创建了新的id
补充:
既是创建也是获取,主要看cookie携带过来的jsessionid服务器是否有与之匹配的session对象,有则获取,无则创建
设置时间
指定时间内(一般30min)session没有被使用,则被销毁,被使用则重新计时
强制失效作用:用户退出网站时可用,(浏览器不退出,关闭淘宝网站,下次打开重新登录)
设定时间:
在xml配置文件中:
session-config 有个timeout 可修改时间
在这里插入图片描述

session对象的setAttribute(String,Object)什么都能存放,因为value是object

不同请求(重定向/多次访问)拿不到共享数据:
1、先查sessionid是否一样 session对象.getid();
回顾:不同请求不是不同的servlet(同一请求可以有多个servlet进行处理:请求转发)
2、session:要先存后取

session失效处理
1、关闭浏览器,不作处理
2、用户没关闭浏览器,但是session过了时间已经失效,在下次操作是可能会报错:需要在操作之前加上校验:(比对cookie中的ID和session中的是否一致,因为失效后session对象的getAttribute()会重新创建sessionid)

Session:
1、在login获取session,设置person对象保存
2、在cookieServlet获取session,设置person对象保存,保证下次登陆cookieservlet能直接跳进main中显示用户信息
3、Mainservlet获取session对象,访问登陆用户的信息

案例:

用户登录页为cookieServlet
重定向方式:
用户进入login页面后,能在main页面获取login页的person对象
用户进行cookie直接到main中,能在main中获取cookieServlet的person对象

在loginServlet中获取session对象,加入person对象
在这里插入图片描述
在cookie中获取session对象,加入person对象
在这里插入图片描述

在main中获取session
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值