1.cookie
cookie可以将少量信息通过servlet发给web浏览器,并保存在浏览器端,当服务器需要时再传给服务器。cookie的值可以唯一的标志客户端,因此cookie常被用来做会话管理。用于存储会话过程中产生的数据。
当在服务器端获取cookie后,进行请求/回应时,请求/响应头会自动添加cookie/set-cookie
2.cookie的特性
name
value
path :默认就是当前访问的这个Servlet的路径
maxAge 如果为0就删除
3.如何使用
服务器写cookie给浏览器
Cookie cookie=new Cookie();
response.addCookie("name","value");
响应头:set-cookie:name=value
服务器得到浏览器发来的cookie
Cookie[] cookies=request.getCookies();
请求头:cookie:name=value;
4.cookie文件中数据存储的格式
showTime 1421718610521 localhost /day09_00_showtime/servlet/
name value domain path
能被访问的URL的特点:
Cookie 能被访问要符合:MYURL.startWith(domain+path)完全匹配 然后再找name也匹配,此时才能访问到value
如:
http://localhost:8080/day09_00_showtime/servlet/abc/ShowTimeServletDemo5 //给
http://localhost:8080/day10_00_cookie/servlet/ShowTimeServlet //不给
http://localhost:8080//day09_00_showtime/ShowTimeServlet //不给
给不给服务器传cookie是由浏览器决定的,取决于domain+path+name是否匹配
session部分:
1.特点
存在服务器上,先是服务器产生一个Session对象,并在session对象中分配一个唯一的id,通过http协议响应头发送一个Set-Cookie:JSESSIONID=id号给浏览器,以后浏览器发送数据时就通过Cookie:JSESSIONID=id号。
2.如何获取session
//这两种方法是一样的,先判断有没有,有直接返回,没有创建一个新的
HttpSession session = request.getSession();
HttpSession session = request.getSession(true);
HttpSession session = request.getSession(false);//如果有就返回,没有的话返回null,
3.实现原理
跟Cookie一样,只不过不发数据,发一个JSessionId的号码(当session创建以后会将产生的jsessionID响应给浏览器)
如果浏览器发送的JSessionId与服务器的JSessionId一样,说明是同一个Session,数据
此时就存在这个Session中
Set-cookie:JSESSIONID=23354354543543 响应头
cookie:JSESSIONID=23354354543543 请求头
Session只与浏览器有关.
4.用Session就是把它当成一个域对象来用 (就是一次会话过程)
内部维护了一个Map集合
setAttribute("key",Object);
Object value = getAttribute(key);
removeAttribute(key);
存活时间:30分钟(空闲的)会销毁(Tomcat配置文件中有)
session.invalidate();//强制销毁