Cookie and Session

Cookie and Session

1.cookie的原理
例:有一个篮球场是我开的(我要收费)。
在我这里来打蓝球。
第一次来打球,我就为你办一张会员卡
在这里插入图片描述
在这里插入图片描述

以后来打球,直接把会员卡拿出来,就可以进去打球了……

2.我们怎么使用cookie
2.1创建coolie
EmailMainServlet.java(设置cookie)
在这里插入图片描述

2.2得到cookie
EmailListServlet.java(得到cookie)
在这里插入图片描述

EmailSingleServlet.java(得到cookie)
在这里插入图片描述

2.3解决中文问题
好像Cookie是不支持中文的(怎么办)
我们就需要进行编码与解码……
在这里插入图片描述

在WEB程序中怎么解决:

编码:
在这里插入图片描述

解码:
在这里插入图片描述

在 Tomcat7中,是不支持中文的 ……

2.4修改Cookie方式1
在这里插入图片描述

2.5修改cookie的第二种方式
在这里插入图片描述

2.6删除Cookie
很坑的就是,并没有提供删除Cookie给我们
cookie.setMaxAge(0);

2.7Cookie的生命周期(了解)
生:Cookie在创建之后放到浏览器中
死:关闭浏览器
我们可以自己去设置Cookie的存在时间
cookie.setMaxAge(int second);
例:cookie.setMaxAge(60 * 60 * 24 * 7); //一周

代码:
EmailMainServlet
在这里插入图片描述

EmaiListServlet
在这里插入图片描述

正数:代表多少秒
0:就代表删除
负数:关闭浏览器

2.8cookie的路径与域的问题
路径问题
/cookie/login 在这个路径下面保存的Cookie
/cookie/single:可以拿到路径的
/cookie2/list :这个就拿不到路径
Cookie默认只存在当前路径的位置
怎么解决:
EmailListServlet
在这里插入图片描述

EmailMainServlet
在这里插入图片描述

域的问题(了解)
就我们使用百度的时候(登录一次,在所有的地方都可以使用):
www.baidu.com
news.baidu.com
doc.baidu.com
Music.baidu.com
跨域对二级域名跨域的方式
实现代码:cookie.setDomain(".baidu.com")

2.9Cookie有什么问题
①它还是不安全(cookie存在客户端)
②操作中文太麻烦了
③Cookie依然是有限制的
Cookie大小限制在4KB之内;
* 一台服务器在一个客户端最多保存20个Cookie;

  • 一个浏览器最多可以保存300个Cookie;
    ④Cookie不能操作对象

好处:可以设置保存很长的时间
2.10小结
1.使用Session去解决Cookie的缺点,Session和Cookie用到不同地方(以后用了在说)
4.Session

1.刚才我们已经看到了。Cookie有很多问题,那么我们又有一种解决方法,它叫做session
2.Session是一种解决方安案,但是它不是cookie的代替方案

1 .Session又是怎么来保持状态连接的
举一个例:
我开了一家旅馆,张三来住店。(把钥匙给张三),把他的东西放在他自己的房间里面,他出去玩了,玩完之后回到旅馆,需要进他自己的房间(钥匙);
在这里插入图片描述

理解Session:
Session是把数据保存到服务器端
Session底层依然使用Cookie
在这里插入图片描述

从上面我们可以看到:要使用session(也是在cookie基础上)
2创建session
HttpSession session = req.getSession();
如果有session,那么直接拿到session
如果没有session,创建一个session,再拿到这个session
HttpSession session = req.getSession(boolean value);
value:true -> 如果有直接拿,如果没有创建一个
value:false ->如果有直接拿,如果没有返回null

在这里插入图片描述

3怎么能session里面设置值
session.setAttribute(String key, Object obj);
session.setAttribute(“name”, name);
session.setAttribute(“user”, user);

4怎么从session里面取值
req.getSession().getAttribute(String key);
req.getSession().getAttribute(“name”)

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

5删除session中的值
根据一个key删除session中的一条记录
req.getSession().removeAttribute(“name”);
销毁整个Session对象
req.getSession().invalidate();

6.存取一个对象
在这里插入图片描述
在这里插入图片描述

7.session的取名
这个不做强制要求:XXX_IN_SESSION
NAME_IN_SESSION
USER_IN_SESSION
8.session的生命周期
从我们创建session开始,到关闭浏览器死亡
注意:①很多网站/系统登陆就是使用session;
②Session有一个问题:所以内容都保存服务器内存里面,服务器内存有很大负担,慎用
Session有超时时间,默认为30分钟当我们没有操作开始计算,既然有默认的,那么我们就可以自定义一个时间(秒)session.setMaxInactiveInterval(Integer interval)
一般不再程序里面设置,应该如何要设置,需要设置很多地方
直接在web.xml中设制session的过期时间(单位分钟):
如果设置为负数 , 关闭浏览器
9.禁用cookie后,怎么办
重写URL
http://localhost/session/single;jsessionid=372EC71FF0939E7C74B533B071714C5E
resp.encodeURL(“路径”) -->资源重写解决这个问题
以后工作我们可能会做上传的功能。 上传的时候很有可能我们会使用flash组件。
Flash组件有一个问题:session丢失,这个时候就需要将jsessionid手动进行传递提交/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值