一.cookie
1.什么是cookie
当用户访问服务器时,服务器会给浏览器发送一些信息 这些信息保存在cookie中。当浏览器再次访问服务器时,会在请求头中将cookie传给服务器,方便服务器对浏览器做出正确的响应
cookie就是这张小纸条
2.cookie案例入门
服务器添加cookie给浏览器
服务器获取浏览器请求携带的cookie
Cookie[] cookies = request.getCookies(); for(Cookie c:cookies){ String name = c.getName(); String value = c.getValue(); System.out.println(name+": "+value); }
①浏览器请求时会接受到服务器传递的cookie。
②浏览器再次请求时会将cookie传递给服务器
二.session
1.什么是Session
Session一般译为会话,是解决Http协议的无状态问题的方案,可以将一次会话中的数据存储在服务器端的内存中,保证在下一次的会话中可以使用。
在客户端浏览器第一次向服务器端发送请求时,服务器端会为这个客户端创建独有的Session,并具有唯一的Session ID,存储在服务器端的内存中。在客户端第二次访问服务器端时,会携带Session ID在请求中,服务器端会根据Session ID查找对应的Session信息,进行进一步地操作。
在JavaEE中提供了javax.servlet.http.HttpSession接口,通过该接口可以将共享的数据内容存储在HttpSession对象中,从而解决Http协议的无状态问题。
2.getsession的执行
第一次执行getSession方法,getSession会去请求头中寻找Cookie信息,Cookie名字:JSESSIONID。第一次执行没有这个cookie信息,所以直接创建一个新的Session对象,并将Session的ID,保存到Cookie中,发给浏览器。
第N次执行getSession方法,getSession会去请求头中寻找Cookie信息,如果Cookie中没找到,就创建一个新的。
如果Cookie中有Jsessionid信息,寻找内存中对应的Session对象,如果找不到,重新创建一个新的,并且写新的JSESSIONID进入cookie;
如果Cookie中Jsessionid信息可以对应上Session对象,就直接将这个Session对象返回并使用。
getSession() == getSession(true)
getSession(false); --à唯一区别是,如果找不到session对象,直接返回null