理解session

Posted xiaoweixiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解session相关的知识,希望对你有一定的参考价值。

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());

以上是关于理解session的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat8下建立WebSocket始终连不上

jsp可以保存两个session吗?

tensorflow源码解析之common_runtime-session

JAVA遇见HTML——JSP篇:JSP内置对象(下)

Hibernate查询语言(HQL)

Hibernate 获取Session