Cookie和Session这么简单?
Cookie
一,会话技术
1,会话:一次会话中包含了多次请求和响应。一次会话就是浏览器第一次给服务器资源发送的请求。
2,功能:在一次会话的范围的多次请求间进行数据共享,直到其中一方断开为止。
3,会话技术
-
cookie:客户端会话技术
-
session:服务器端会话技术
-
1,cookie介绍:将数据保存在客户端浏览器的
-
2,使用步骤:
1,创建cookie对象,new cookie(string name,string value)
2,发送cookie:response.addcookie(cookie cookie)
3,获取cookie:request.getcookies():返回的是一个cookie对象数组
常用的方法:
.getname( ):获取cookie的键名
.getvalue( ):获取cookie的值 -
3,实现原理:
基于响应头set-cookie和请求头cookie实现 -
4,cookie细节
1,一次可以发送多个cookie,你可以创建多个cookie对象,使用response多次调用add cookie方法进行发送cookie。
2,cookie在浏览器中保存的时间?
答:cookie默认的时间是一次会话,即有一方断开就会清除,但是它有一个方法,setmaxage(int seconds)可以设置存活的时间
正数:代表关闭后可以存活多少秒
负数:默认值,一次会话
0:清除cookie信息
3,cookie能不能存中文?
答:在tomcat8以后可以存中文,以前的版本不支持,不过可以转成URL编码进行存储,但是特殊字符还是不支持,那就要转成其他编码了。
4,cookie的获取范围?
答:默认的是当前虚拟项目下,但是可以设置setpath(“/”):整个服务器下都可以获取
当然也可以设置setdomain(“”)一级域名,来扩大获取cookie的范围。 -
5,cookie的特点和作用
(1),cookie存储在浏览器
(2),浏览器对单个的cookie有大小限制(4KB),同样一个浏览器对同一个域名下的总cookie数目不超过20个
作用:
1,cookie一般存储少量不太敏感的信息
2,可以完成在不登陆下,完成服务器对用户身份的识别
Session
-
服务器端会话技术:在一次会话的多次请求间进行共享数据,将数据保存在服务器端的对象中
-
步骤:
1,获取httpsession对象:request.getsession()
2,使用httpsession对象:object getatribute(string name)获取数据
void setattribute(string name,object value)
removeattribute(string name)
3,服务器如何保证在一次会话内的多个请求间的seesion是同一个对象
原理是基于cookie的
假如我们想要使客户端关闭后,seesion仍然相同,就可以设置一个cookie值,然后进行存储JSSEIONID getid()就可以了,需要设置cookie的存在时间。 -
3,session的细节
1,当客户浏览器关闭,服务器不关闭时,两次获取的seesion是同一个吗?
答:默认情况下不是,但是我们可以设置一个cookie值,然后进行存储JSSEIONID getid()就可以了,需要设置cookie的存在时间。
2,客户端不关闭,但是服务器端关闭,两次获取的session是一样的吗?
答:不是同一个,但是要保证数据不丢失
session的钝化:在服务器正常关闭的之前,将session对象系列化到硬盘上
session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。
当然本地的tomcat已经帮我们做过了。3,session的失效时间?
1,服务器关闭
2,seesion对象调用了invalidate()
3,一般的默认时间是30分钟,当然你也可以修改配置文件里的时间。 -
4,session的特点
1,session用于存储在一次会话的多次i请求数据,存在服务器端
2,session可以存储任意类型的数据,而且没有大小的限制 -
5,cookie和session的区别
1,session存储数据在服务器端,cookie存储在浏览器端
2,cookie限制大小在4KB,而session没有限制
3,cookie的数据相对不太安全,session比较安全