首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
首先介绍下基本概念:
cookie是服务器通知客户端让其保存健值对的一种形式,客户端有了cookie之后,每次请求就会发送给服务器,每个cookie最大是4kb
**
服务器创建cookie
**
1Cookie cookie = new Cookie("",""); 创建一个cookie
2response.addCookie(cookie); 通知客户端保存这个cookie
之后就会在响应头中添加cookie信息: Set-Cookie
当浏览器收到了响应之后,就会去检查 如果没有同名的cookie 就直接创建 如果有同名的就直接覆盖
**
服务器获取cookie
**
在客户端请求服务器的时候 请求头里头会有Cookie 所以可以用:
request.getCookies();来获取全部的请求头
**
cookie的生存时间
**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190426110138208.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDY5NTMyOA==,size_16,color_FFFFFF,t_70)
1默认是负数,即浏览器关闭后就会消失 Expires/Max-Age: Session 表示一次会话
2设置为0 在浏览器收到响应后就马上删除cookie ~
3正数: 表示过了足够的秒数才会删除
**
cookie有效路径Path的设置
**
1 若 path = /当前工程 表示:
当我们创建一个cookie的时候 默认的path是 /当前工程,所以就会导致客户端请求该工程下的所有资源的时候 都会把这个cookie发送给服务器~
2 若 path=/当前工程/aaa:
表示我们请求是/当前工程/aaa/* 所有资源的时候才会发送给服务器~ 这样子就可以实现过滤
**
在jsp中使用客户端发送过来的cookie
**
利用jsp的隐藏对象cookie来使用 ${cookie.}
分割~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Session是会话 保存数据在服务器端
1获取Session对象request.getSession() 第一次调用就是创建 之后调用都是获取
Session api:
session.isNew() 判断是否是刚创建出来的
session.getID() 获取id
setAttribute()同一个session可以多次调用 值可以是字符串 也可以是自定义对象
getAttribute()获取值
**
Session的存活时间
**
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190426121634566.png)
1getMaxInactiveInterval():获取session的的默认超时时间 为30分钟 在tomcat web.xml配置文件中配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190426121909774.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDY5NTMyOA==,size_16,color_FFFFFF,t_70)
如果想要更改我们的超时时间
方式一:只需要在自己工程里的web.xml中配置如上命令即可 配置后就不会受外面的默认时间影响了~
方式二:setMaxInactiveInterval():修改当前session的超时时间 以秒为单位~
这里有个注意的点 如果我们设置了所需要的时间 在这个时间内我们重新请求后 会刷新时间重新设置为该时间 所以该时间表示的真正含义是:客户端和服务器之间两次请求的时间间隔
方式二的优先级大于方式1
正数:存活时间
负数或者0:永不清除
想要立马清除session:session.invalidate()
**
tomcat下cookie 和 session的内部机制
**
在tomcat服务器中
1 如果一开始客户端没有名为JSESSIONID的Cookie,服务器在调用request.getSession() 之后会创建一个Cookie 名字就是JSESSIONID 值是该session的id
2服务器通过响应头把session带给客户端 客户端就创建了该cookie
3此后客户端的所有请求都会把该cookie发送给服务器 服务器在调用request.getSession()的时候会查看有没有名叫JSESSIONID的Cookie,有的话就到服务器内存中找并且返回存在的Session对象