Session(会话)
Session
服务器为每一个浏览器在服务端内存中分配空间,单独穿件一个Session对象,该对象有一个唯一SessionId,并且服务器会将这个SessionId(使用Cookie方式)发送给浏览器;浏览器再次访问服务器,会将SessonId发送给服务器,服务器依据SessionId查找对应Sesson对象.
获取Session
HttpSession s = request.getSession(boolean flag);
注:flag默认为true;
使用Session
1.绑定对象: void Session.setAttribute(String name,Object obj);
2.获取绑定对象: Object Session.getAttribute(String name);
3.移除绑定对象: void Session.removeAttribute(String name);
删除Session对象
立即删除:Session.invalidate()
修改Session缺省时间
void session.setMaxInactiveInterval(int seconds)
浏览器禁用Cookie后果
1.浏览器禁用Cookie,Session不能用,但有其他方案解决
2.服务器器默认使用Cookie方式将SessionId发送给浏览器,用户禁用Cookie,则SessionId不会保留在浏览器,服务器可以用URL重写发送SessionId
URL重写
浏览器访问服务器某个地址,不再使用原来的地址,而是使用改写的地址(在原来地址后面加上SessionId)
1.链接地址和表单提交,使用response.encodeURL(String url)
2.重定向,使用response.encodeRedirectURL(String url)
Session优缺点
优点:
1)安全(将状态保存在服务端)
2)Session保存的数据类型丰富,Cookie只能保存字符串
3)Session保存的数据更多,Cookie大约保存4K
缺点:
Session将状态保存在服务器端,占用服务器的内存,如果用户量过大,严重影响服务器的性能.