Java – 会话技术 – Cookie 与 Session
简介
在网站通讯技术中,有两种会话跟踪技术,分别是来自浏览器的Cookie技术和来自服务器的Session技术。
Cookie技术
Cookie存在于浏览器中,早大可存储3kb容量,每一次请求服务器时,浏览器会把cookie数据发送到服务器中,服务器可通过 req.getCookies() 方法获得浏览器保存的Cookie.
// 获取浏览器的Cookie
Cookie[] request.getCookies();
// 设置发送给浏览器的Cookie
response.addCookie(String name, String value)
// 设置Cookie过期时间,以秒单位,如果不设置,则默认浏览器关闭后Cookie也会删除
Cookie cookie = new Cookie("username","zx");
cookie.setMaxAge(int second);
注意:Cookie不支持保存中文,如果必须保存中文,可以先把中文用URL编码后再作保存,取回时再用URL解码回中文即可。
Session技术
Session源于Cookie技术,但Session中的数据保存在服务器中,Session会向浏览器发送一个带有随机生成的id做,名为JSESSION的Cookie发送给浏览器,浏览器每一次请求服务器时都会把JSESSION传给服务器,从而让服务器自动识别并共享Session会话,Session一般情况下只有30分钟生存期(可在web.xml中配置),且只要浏览器重新打开,会因旧的Cookie失效而使服务器中的Session失效。
// 从浏览器会话中获得服务器中的Session
request.getSession();
// 设置数据值到Session中保存
session.setAttribute(String key, Object obj);
// 取得Session中的数据
session.getAttribute(String name)
// 删除Session中的数据
session.removeAttribute(String name)
// 自我销毁Session会话,销毁后不能再次读取Session数据
session.invalidate();
共有 0 条评论