1.会话技术:
Cookie
Session
会话技术:
1.会话:一次会话中包含多次请求和响应。
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到一方断开为止。
2.功能:在一次会话的范围内的多次请求间,共享数据。
3.方式:
1.客户端会话技术:Cookie
2.服务器端会话技术:Session
Cookie:
1.概念:客户端会话技术,将数据保存到客户端
2.快速入门:
步骤:
1.创建Cookie对象,绑定数据。
Cookie(String name,String value);
2.数据发送Cookie对象
response.addCookie(Cookie cookie)
3.获取Cookie,拿到数据。
Cookie[] request.getCookies()
实现原理:
基于响应头set-cookie和请求头cookie实现
Cookie的细节:
1.一次可不可发送多个cookie?
可以:可以创建多个cookie对象,使用response调用多次addCookie方法发送cookie即可。
2.cookie在浏览器中保存多长时间?
1.默认情况下,存在浏览器内存中,当浏览器关闭后,Cookie数据被销毁。
2.设置cookie的生命周期,持久化存储:
setMaxAge(int seconds);存活时间
1.整数:将cookie数据写道硬盘的文件中,持久化存储。
2.负数:默认值,存在内存中。
3.零:删除cookie信息。
3.cookie能不能存中文?
在tomcat 8之间,cookie中不能直接存储中文数据。
需要将中文数据转码--一般采用URL编码(%e3)。
在tomcat8之后,cookie中能直接存储中文数据。
4.cookie获取范围多大,共享问题?
假设在一个tomcat服务器中,部署多个web项目,那么在这些web项目中cookie能不能共享?
默认情况下cookie不能共享
setPath(String path):设置cookie的获取范围,默认情况下,设置当前的虚拟目录。
cookie.setPath("/");这样是可以共享的cookie。
不同的tomcat服务器 上cookie可以共享吗?
1.setDomain(String path);如果设置一级域名相同,那么多个服务器之间cookie可以共享。
setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中的cookie可以共享。
cookie的特点
1.cookie存储数据在客户端浏览器中。
2.浏览器中单个cookie的大小有限制4kb,以及同一个域名下的总cookie数量也有限制(20个)
作用:
1. cookie一般用于存出少量的不太敏感的数据
2. 在不登录的情况下,完成服务器对客户端的身份识别
Session:
1.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,httpSession
2.HTTPSession对象:
1.获取HttpSession对象
HttpSession session = request.getSession();
2.使用HttpSession对象
setAttribute(String key,Object obj)
removeAttribute(String key);
Object getAttribute(String key);
服务器如何确保在一次会话范围内,多次获取的Session对象是同一个?
Session是依赖于Cookie的。
1.第一次获取Session,没有Cookie,会在内存中创建一个新的Session对象。有一个Session对象id.
2.这个id被设置到Cookie中。set-cookie
3.下次再去访问服务器,在Cookie中携带session的id。
4.通过id查找Session对象。
细节:
1.当客户端关闭后,服务器不关闭,两次获取的Session对象是否为同一个?
默认情况下,不是。
期望客户端关闭后,session也能相同,可通过设置Cookie来达到需求。设置Cookie的失效时间,将Session的id存入Cookie。
2.客户端不关闭,服务器关闭后,两次获取的Session对象是否为同一个?
不是同一个。但是要确保数据不丢失。
Session的钝化:在服务器正常关闭之前,将session对象序列化到硬盘上。
Session的活化:在服务器启动后,将Session序列化的文件转化为内存中的Session对象即可。
3.Session什么时候被销毁?
1.服务器关闭
2.Session调用invalidate()方法。
3.默认的失效时间30分钟。是可以在tomcat中web.xml中配置失效时间。
Session的特点:
1.session用于存储一次会话的多次请求的数据,存在服务器端。
2.session可以存储任意类型,任意大小的限制。
sesion与cookie的区别:
1.数据存储的地方不同。
2.数据大小的限制不同。
3.session安全,cookie相对不安全。