1、cookie
在客户端保持状态的方案,好比会员卡,初始的时候服务器会给用户一个cookie,在下一次请求服务器时就可以在请求头里携带cookie,从而认证身份,达到持续连接的效果。
cookie在一段时间后就会失效。
doget():
//发送cookie给客户端 Cookie cookie = new Cookie("aa", "bb"); //给响应,添加一个cookie response.addCookie(cookie); response.getWriter().write("请求成功了..."); //获取客户端带过来的cookie Cookie[] cookies = request.getCookies(); if(cookies != null){ for (Cookie c : cookies) { String cookieName = c.getName(); String cookieValue = c.getValue(); System.out.println(cookieName + " = "+ cookieValue); } }
(cookies好似一个map表)
(用cokie记录浏览记录的话,可以在value上修改增长该字符串)
设置相关参数:
//关闭浏览器后,cookie就没有了。 ---> 针对没有设置cookie的有效期。 // expiry: 有效 以秒计算。 //正值 : 表示 在这个数字过后,cookie将会失效。 //负值: 关闭浏览器,那么cookie就失效, 默认值是 -1 cookie.setMaxAge(60 * 60 * 24 * 7); //赋值新的值 //cookie.setValue(newValue); //用于指定只有请求了指定的域名,才会带上该cookie cookie.setDomain(".itheima.com"); //只有访问该域名下的cookieDemo的这个路径地址才会带cookie cookie.setPath("/CookieDemo");
2、session(会话)
在服务端保持状态的方案,在服务器上用它来存储数据(比在客户端的cookie安全),也是servlet/jsp的一个内置对象(作用域),可以存储数据,数据会在与对应的用户会话时期有效。
(1)session信息放在cookie里,由cookie得知用户的sessionID
(2)cookie被浏览器禁止了?可以以get方式放在url后面
常用api:
//得到会话ID String id = session.getId(); //存值 session.setAttribute(name, value); //取值 session.getAttribute(name); //移除值 session.removeAttribute(name);
//强制干掉会话,里面存放的任何数据就都没有了。 session.invalidate(); * 创建和销毁
调用request.getSesion创建 服务器关闭 ,或者 会话超时(默认30分钟)