Cookies 是把用户的数据写给浏览器 保存在浏览器中 然后用户可以在浏览器中获取保存的cookies
Session技术 使把用户的数据 写到用户独占的session中
Session对象由服务器创建 开发人员可以调用request 的getSession方法获取 这点与cookies差不多
session 是为一个会话服务 如果分别打开2个网页 session不同步
Session 的创建与销毁 :
不是在打开浏览器时 创建的 是 调用getSession时 创建的
Session 的销毁 是 30分钟 没人用的时候 服务器才会销毁他 即使浏览器关了 也不销毁 即使浏览器不关 30分钟后不用session 也会销毁 但这个30分钟 可以自定义
在 web.xml中配置 : 十分钟后销毁
<session-config>
<session-timeout>10</session-timeout>
</session-config>
session.invalidate();
这句代码过后 session即销毁
getsession()函数有一种有参数的重载 若 参数为false 则只获取 不创建session
但是 session 浏览器关了 就会销毁 若是想让他 浏览器关了 不销毁 那么要明白session的原理
session 是通过回写给浏览器一个cookies id来 识别用户的session的 当然 这个cookies 没有设置 有效期 也就是浏览器关闭 就会销毁 所以 我们只要创建一个同名的cookies覆盖原有的cookies 然后设置有效期即可!
具体代码如下:
HttpSession session = request.getSession();
String idString = session.getId();
Cookie cookie = new Cookie("JSESSIONID", idString);
cookie.setMaxAge(30*60);
cookie.setPath("/cooks");
response.addCookie(cookie);
session.setAttribute("history", "哈哈");
其中Cookie的名字 通过HTTPWATCH 获得