JavaEE规范中,session被定义为一个具体的接口,javax.servlet.http.HttpSession,这个接口最终由符合 JavaEE规范的应用服务器来实现,如我们最常用的Tomcat、Weblogic、Websphere等,session通常是存储在服务器内存中的 (也有其它存储方式,但这里只讨论这种情况),也就是说session是服务器创建的,而不是浏览器创建的。
在服务器上,通过session来区分每一个上网用户,用户只要连上服务器,就会立即分配一个Session 给用户
Session 主要方法:
服务器上通过session给每一个用户分配一个不会重复的session ID,sessionID 是由服务器统一管理的,人为不能控制。
session.getId(); 长度:32
判断是否为新的session
public boolean isNew();
Session的属性设置
设置属性:public void setAttribute(String name,Object value);
取得属性:public Object getAttribute(String name)
删除属性:public void removeAttribute(String name)
注销用户:让用户的session失效
如果session失效,则在session所保留的全部操作也会消失
public void invaldate() 是session失效(手工)
如果session长时间不被使用,也会自动失效
得到session的创建时间
public long getCreateTime()
此方法放回long类型,通过new Date()可以取得一个完整时间
取得用户最后操作的时间:pubic long getLastAccessedTime();
总结
Session将信息保存在服务器上,而cookie保存在客户端上
Session比Cookie更安全,Session比Cookie更占资源
Session是消耗服务器内存的,所以要合理使用Session,别什么东西都往Session里放。
Session是由服务器创建的,跟浏览器没有半毛钱关系,浏览器只是拿到一个JSESSIONID。
开发原则:Session 要尽量少用,尽量少向Session中保存信息
Session使用了Cookie的机制,如果Cookie被禁用,则Session也无法使用,因为客户端的Session ID以Cookie的形式存在,保存在客户端的内存中,我们可以通过url重写来保证session的有效性。
重写URL的方法如下
resp.encodeURL(request.getRequsetURL().toString());