Session生命周期

Session存储在服务器端,一般放置在服务器的内存中(为了高速存取),Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。

  Session什么时候失效?

  1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。

  2. 调用Session的invalidate方法。

  Session对浏览器的要求:

  虽然Session保存在服务器,对客户端是透明的,它的正常运行仍然需要客户端浏览器的支持。这是因为Session需要使用Cookie作为识别标志。HTTP协议是无状态的,Session不能依据HTTP连接来判断是否为同一客户,因此服务器向客户端浏览器发送一个名为JSESSIONID的Cookie,它的值为该Session的id(也就是HttpSession.getId()的返回值)。Session依据该Cookie来识别是否为同一用户。

  该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。因此同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。

  注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择"在新窗口中打开"时,子窗口便可以访问父窗口的Session。

  如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。

  URL地址重写是对客户端不支持Cookie的解决方案。URL地址重写的原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动地输出来。如果客户端不支持Cookie,则会将用户Session的id重写到URL中。

  注意:TOMCAT判断客户端浏览器是否支持Cookie的依据是请求中是否含有Cookie。尽管客户端可能会支持Cookie,但是由于第一次请求时不会携带任何Cookie(因为并无任何Cookie可以携带),URL地址重写后的地址中仍然会带有jsessionid。当第二次访问时服务器已经在浏览器中写入Cookie了,因此URL地址重写后的地址中就不会带有jsessionid了。

时间: 2024-10-05 04:19:27

Session生命周期的相关文章

session生命周期(一)

Session存储在服务器端,一般为了防止在服务器的内存中(为了高速存取),Session在用户访问第一次访问服务器时创建,需要注意只有访问JSP.Servlet等程序时才会创建Session,只访问HTML.IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session. Session什么时候失效? 1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效.Tomcat中Session的默认失效时间

php会话(session)生命周期概念介绍及设置更改和回收

http://www.169it.com/article/8429580816135935852.html https://my.oschina.net/jiec/blog/227252 如何严格限制session在30分钟后过期!1.设置客户端cookie的lifetime为30分钟:2.设置session的最大存活周期也为30分钟:3.为每个session值加入时间戳,然后在程序调用时进行判断:至于为什么,我们首先来了解下php中session的基本原理:PHP中的session有效期默认是

session 生命周期

以前看到书上session 的生命周期,知道session的生命周期是在第一次访(即打开浏览器输入地址成功访问)的时候被创建.同时HttpSessionListener接口的sessionCreate会被调用. 等到浏览器关闭或者服务器重启的时候session会被创建. 但在最近的实验中发现,在浏览器直接访问默认的servlet时,session并没有被创建出来.而当在servlet中执行    HttpSession session = request.getSession();     时显

PHP Session生命周期[转]

PHP5有很多值得学习的地方,这里我们主要介绍PHP5 Session的使用,Session 是如何来判断客户端用户的呢?它是通过 Session ID 来判断的,什么是 Session ID,就是那个 Session 文件的文件名,Session ID 是随机生成的,因此能保证唯一性和随机性,确保Session 的安全.一般如果没有设置 Session 的生存周期,则 Session ID 存储在内存中,关闭浏览器后该 ID 自动注销,重新请求该页面后,重新注册一个 Session ID. 如

servlet生命周期已经session的生命周期

简单记笔记 1,创建Servlet对象,通过服务器反射机制创建Servlet对象,第一次请求时才会创建.(默认) 2,调用Servlet对象的init()方法,初始化Servlet的信息,init()方法只会在创建后被调用一次: 3,响应请求,调用service()或者是doGet(),doPost()方法来处理请求,这些方法是运行的在多线程状态下的. 4,  在长时间没有被调用或者是服务器关闭时,会调用destroy()方法来销毁Servlet对象. session生命周期 session是服

servlet,session对象的生命周期

谈到javaweb首先想到的就是servlet,说道servlet就会想到servlet的生命周期 那么servlet到底是什么时候出生,什么时候死亡叻 说道他的生命周期 就绕不过servlet的三个方法init service destroy 当我们将web项目部署到服务器,服务器启动的时候,这个时候servlet还没创建,,服务器启动了  开始对外提供服务,客户端可以访问了, 当某一个客户端第一次访问时候此servlet时候------>服务器找不到servlet对象------->这个时

php 会话控制(关于session的维护与生命周期)

Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器创建生成一个唯一的sessionID,用该sessionID为标识符来存取服务器端的Session存储空间,在会话期间,分配给客户端的唯一sessionID,用来标识当前用户,与其他用户进行区分. sessionID也可以作为会话信息保存到数据库中,进行session持久化.这样可以跟踪用户的登陆次数.在线与否.在线时间等从而维护HTTP无状态事物之间的关系.session的内容存储是键值对的列表,键是字符串

Session原理、生命周期及购物车功能的实现

在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据(保存该浏览器(会话)的相关信息)时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务. Session和Cookie的主要区别在于: Cookie是把用户的数据写给用户的浏览器. Session技术把用户的数据写到用户独占的

servlet的session的生命周期

谈到javaweb首先想到的就是servlet,说道servlet就会想到servlet的生命周期 说道servlet的生命周期 就绕不过servlet的三个方法init service destroy 当我们将web项目部署到服务器,服务器启动的时候,这个时候servlet还没创建,,服务器启动了  开始对外提供服务,客户端可以访问了, 当某一个客户端第一次访问时候此servlet时候------>服务器找不到servlet对象------->这个时候服务器就会创建servlet对象,并且调