目录
2.保存到客户端浏览器上,通过响应对象addCookie()
第一步: 在servlet中写逻辑代码,判断是否勾选“记住我”
第二步:定义函数,在jsp页面编写refreshCode()方法
第三步:修改LoginServlet类的代码,当验证码错误时,显示“验证码错误”,若验证码不成功,不验证用户名和密码是否正确
(一)Cookie概述
1.什么叫Cookie
Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!
总结:
cookie特征:
- 创建于服务器,保存于客户端
- 不同的浏览器之间不能共享,
- 不能跨浏览器
- Cookie的key,value都是String
- 在之后的请求中,cookie会以请求头的方式自动发送给服务器
请求头:
缺点:
- 不安全,在客户端浏览器的键值不加密
- key,value的数据类型有限,只能存string类型的数据
2.Cookie规范
Cookie大小上限为4KB;(不同的浏览器cookie的内存大小可能不同)
一个服务器最多在客户端浏览器上保存20个Cookie;
一个浏览器最多保存300个Cookie;
注意:
不同浏览器之间是不共享Cookie的。也就是说在你使用IE访问服务器时,服务器会把Cookie发给IE,然后由IE保存起来,当你在使用FireFox访问服务器时,不可能把IE保存的Cookie发送给服务器。
3.Cookie的覆盖
如果服务器端发送重复的Cookie那么会覆盖原有的Cookie,例如客户端的第一个请求服务器端发送的Cookie是:Set-Cookie: a=A;第二请求服务器端发送的是:Set-Cookie: a=AA,那么客户端只留下一个Cookie,即:a=AA。
如果cookie的name与path一样, 覆盖value, 如果没有设置path: 默认值, 创建Cookie的资源上级路径
虽然name相同,但path不一样,所以没有覆盖
name相同,path相同,覆盖
cookie的path:
- localhost:8090/bbb
访问的cookie: path为/下的cookie
- localhost:8090/user/ccc
访问的cookie: path为/下的cookie和path为/user下的cookie
- localhost:8090/a/b/c/d: 能访问的cookie: /c 下, /b 下 /a下 /下
path为/下的cookie,可以被所有的资源访问
某个url能访问的cookie: path为父辈级目录的Cookie,
调用setPath()给cookie设置path
4.cookie的最大存活时间 (Cookie的生命)
默认存活时间:会话级别,浏览器关闭,这个cookie就会被删除
调用setMaxAge(int 参数) 设置最大存活时间 单位: 秒
-1: 会话级别
>0: 存活多少秒, 时间一到,浏览器自动清除
0: 立即删除cookie
会话的概念:客户端打开浏览器,访问服务器表示会话的开始
- 只要浏览器不关闭, 这次会话一直存在, 这次会话内所有的请求, 共享同一个session域
- 当客户端关闭浏览器, 表示会话的结束
- 类似于生活中的通话
(二) Cookie的API
1.创建Cookie:new 构造方法
构造方法:
2.保存到客户端浏览器上,通过响应对象addCookie()
//创建Cookie保存到客户端浏览器上 Cookie cookie1 = new Cookie("k1","v100"); Cookie cookie2 = new Cookie("k2","v200");