会话技术
*会话技术:
1.会话:一次会话中包含多次请求和响应。
*一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到一方断开为止
2.共享数据:在一次会话的范围内的多次请求间,共享数据
3.方式:
1.客户端会话技术:Cookie
2.服务器端会话技术:Session
Cookie:
1.概念:客户端会话技术,将数据保存到客户端
2.快速入门:
*使用步骤:
1.创建Cookie对象,绑定数据
2.发送Cookie对象
3.获取Cookie,拿到数据
//创建cookie对象
Cookie c = new Cookie("msg","hello");
//发送对象
resp.addCookie(c);
//接收对象
Cookie[] cookies = req.getCookies();
//遍历数组
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(name + ":" + value);
}
}
3.cookie的细节:
1.一次可不可以发送多个cookie?
*可以,可以创建多个cookie对象,使用response调用多次addcookie方法发送cookie
2.cookie在浏览器能保存多长时间?
1.默认情况下,放浏览器关闭后,cookie数据被销毁
2.持久化存储:
*setMaxAge(int seconds)
int:正数:将cookie数据写到硬盘的文件中。持久化存储。cookie的存活时间,秒数
负数:默认值
零:删除cookie信息
3.cookie能不能存中文?
*在tomcat 8之前cookie不能存中文
*需要将中文数据转码--一般采用url编码
*在tomcat 8之后cookie可以存储
4.cookie获取范围多大?
1.假设在一个tomcat服务器中,部署了多个web项目,那么在这些web项目中不能共享cookie
*setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录。
如果要共享,则可以将path设置"/”。
2.不同的tomcat服务期间cookie的共享问题?
setDomain(String path):如果一级域名相同,那么多个服务器间cookie可以共享
*setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享。
4.cookie的特点和作用
特点:
1.cookie存储数据在客户端浏览器。
2.浏览器对于单个cookie的大小有限制,以及对同一个域名下的总cookie数量也有限制。
作用:
1.cookie一般用于存储少量的不太敏感的数据
2.不登陆的情况下,完成服务器对客户端的身份识别
Session:
1.概念:在服务器会话技术,再一次会话的多次请求间共享数据,将数据保存在服务器端的对象中
2.快速入门:
//获取session
HttpSession session = request.getSession();
//存数据
session.setAttribute("msg","hello");
//获取session
HttpSession session = request.getSession();
//获取数据
Object msg = session.getAttribute("msg");
System.out.println(msg);
3.原理:Session的实现是依赖于cookie的
4.细节:
1.当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
*默认情况下,不是
*如果需要相同,则可以创建cookie,键位JSESSIONID,设置最大存活时间,让cookie持久化保存
session.setAttribute("msg","hello");
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
2.客户端不关闭,服务器关闭
*不是同一个,但是要确保数据不丢失
*session的钝化:
*在服务器正常关闭之前,将session对象系列化到硬盘上
*session的活化:
*在服务器启动后,将session文件转化为内存中session对象即可。
3.session的失效时间?
1.服务器关闭
2.session对象调用
3.session默认失效时间30分钟
选择性配置修改
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5.session的特点:
1.session用于存储一次会话的多次请求数据,存在于服务器端
2.session可以存储任意类型,任意大小的数据
*session于cookie区别:
1.session储存数据在服务器端,cookie在客户端
2.session没有数据大小限制,cookie有
3.session数据相对安全。