`
A牛哥哥
  • 浏览: 150207 次
社区版块
存档分类
最新评论

cookie的创建和session的生命周期等

阅读更多
Cookie简介
Cookie是键值对, 由服务器端生成写到浏览器端, java中创建cookie并写回cookie的代码如下:
	Cookie c = new Cookie("cookie--key", "cookie—value");
	c.setMaxAge(3600);//表示3600秒
	c.setDomain("localhost");//设置cookie的域,域与当前项目的域不一样是不能写回到浏览器的,一般不用设置,默认就是当前项目的域名
	c.setPath("/");//路径,/表示根目录,默认是"/项目名"
	response.addCookie(c);//添加cookie到response中
	response.sendRedirect(request.getContextPath()+"/index.jsp");



浏览器端收到上述cookie如下:

因为设置了maxAge为3600秒即1小时,因此其过期时间显示为2013年12月31日 11:46:33, 而我当前时间为2013年12月31日 10:46:33, 正好延迟3600秒即1小时.






一, Cookie的生命周期
如果没有设置maxAge, 默认是当前会话结束时.
如果设置了maxAge, 则直到设定时间.

什么叫会话结束?
就是浏览器关闭时, 关闭浏览器上的tab页不算会话结束.

二, cookie 什么时候产生
访问html不产生cookie
访问jsp , servlet产生cookie , 如下是访问了一个空的test.jsp产生的cookie:



这个cookie不是程序员创建的, 而是服务器自动创建的, 包含的信息就是就jsessionid, 域和路径都是默认的, 过期时间是会话结束.


提问: 当你登录网站后, 然后关闭浏览器, 再重新进入该网站还是登录状态吗?
不是, 但有的网站确实不需要登录啊?这是因为在登录时, 程序员给你的cookie做了处理

怎样处理后才能保持登录状态呢?
每次访问(除访问html)服务器就会自动创建一个名为JSESSIONID, 值为JSESSIONID值的cookie写到浏览器端, 而这个cookie的过期时间是会话结束时, 所以只要改变这个cookie的过期时间就可以达到第二次进入还是登录状态, 代码如下:
        Cookie c = new Cookie("JSESSIONID",request.getSession().getId());
	c.setMaxAge(3600);//表示3600秒
	c.setPath("/");//路径,/表示根目录,默认是"/项目名"
	response.addCookie(c);//添加cookie到response中
        response.sendRedirect(request.getContextPath()+"/index.jsp");



浏览器端接收到cookie如下:



这时有了两个都叫JSESSIONID的cookie, 图中被选中的cookie的过期时间是2013年12月31日 12:02:35, 我当前时间是2013年12月31日 11:02:35, 因此在一个小时内, 不管我关不关闭浏览器, 再次进入该网站,一直都是登录状态(前提是服务器端的session过期时间大于1小时), 上面那个JSESSIONID的cookie是服务器自动产生的,过期时间是会话结束时







三, Session的生命周期
Tomcat中默认是30分钟, 在tomcat的conf/web.xml中有如下配置:
<session-config>
        <session-timeout>30</session-timeout>
</session-config>


其中的30表示30分钟, 我们想给自己的项目配置session的生命周期, 可以在自己项目中的web.xml中也进行上述配置即可,如改为60分钟:
<session-config>
        <session-timeout>60</session-timeout>
</session-config>



这个30分钟是指一共就存活30分钟, 还是说距最后一次访问30分钟?
网上两种说法有争议, 不如自己测一下, 将session过期时间设为1分钟,利于测试.
结果是距最后一次访问30分钟而不是一共30分钟,测试过程:
1, 将session生命周期设为1分钟后, 启动项目, 登录后隔5秒钟就刷新一次页面,一直持续了2分钟还是处于登录状态, 说明session还在
2, 停止刷新, 静置1分钟, 再次刷新, 已经不是登录状态, 说明session已经丢失
  • 大小: 90.7 KB
  • 大小: 84.8 KB
  • 大小: 91.4 KB
分享到:
评论

相关推荐

    session生命周期的设置

    Session生命周期的设置是管理用户会话的关键环节,它决定了一个Session对象从创建到失效的时间间隔。本篇将深入探讨Session的工作原理、生命周期以及如何进行有效设置。 一、Session的工作原理 Session的工作基于...

    c#实现cookie和session的登陆实例

    - 设置适当的Cookie和Session生命周期,防止长期有效的登录令牌被滥用。 6. **最佳实践**: - 考虑使用更现代的身份验证机制,如JWT(JSON Web Tokens),它们可以提供更安全、更灵活的用户认证方案。 通过以上...

    经典收藏Cookie和Session

    - **生命周期**:会话Cookie的生命周期较短,当用户关闭浏览器时,这些Cookie将被自动删除。 - **用途**:主要用于保存一些临时信息,如用户的登录状态等。 - **实现方式**:可以通过设置Cookie的`Max-Age`属性为...

    session与cookie的区别和联系?

    - Cookie的生命周期可以通过设置过期时间来控制,支持会话级和持久化。 - Session的生命周期一般通过用户行为自动管理,比如一定时间不操作则自动过期。 4. **隐私和安全**: - Cookie可能涉及到用户隐私问题,...

    cookie和session示例

    在Java的Servlet环境中,可以使用`getSession`方法创建和操作Session: ```java import javax.servlet.http.HttpSession; public void doGet(HttpServletRequest request, HttpServletResponse response) { ...

    javaweb之cookie和session的应用

    在Java中,可以通过HttpServletResponse的addCookie方法创建和发送Cookie。例如: ```java Cookie cookie = new Cookie("username", "John"); cookie.setPath("/"); response.addCookie(cookie); ``` **Session** ...

    c#.net配置Session的生命周期.rar(视频)

    通过Ex01_05视频教程,你将详细学习到如何在实际项目中配置和管理C#.NET的Session生命周期,包括设置超时、选择存储模式以及优化Session使用等技巧。这将有助于你更好地理解Session在Web开发中的角色,从而提升应用...

    day16_cookie&session源代码.zip

    Cookie的生命周期可由服务器设定,过期后将被浏览器自动删除。每个Cookie都有一个名称、值、路径、域和过期时间等属性。 Session则是在服务器端存储用户会话数据的一种机制。当用户登录网站后,服务器会为该用户...

    Cookie机制和Session机制

    - 更好的可管理性:服务器可以控制会话的生命周期。 - **挑战**: - 服务器资源消耗:每个活动会话都需要在服务器端占用内存。 - 扩展性问题:在多服务器环境下,需要解决会话数据的共享问题。 #### 六、Cookie...

    cookie和session

    4. **生命周期**: - Cookie的有效期可以根据需要设定。 - Session的有效期通常由服务器控制,可以通过设置超时时间来管理。 #### 七、总结 通过以上介绍可以看出,Cookie与Session虽然都用于维护用户会话状态,...

    JAVA之cookie与session

    2. **生命周期**:Cookie 可以被设置为永久或临时。永久 Cookie 即使关闭浏览器后也会保留,而临时 Cookie 在浏览器关闭时会被删除。 3. **如何发送和接收 Cookie**:每当客户端向服务器发起 HTTP 请求时,如果存在...

    Application,Session,Cookie,ViewState和Cache生命周期

    Application,Session,Cookie,ViewState和Cache生命周期

    cookie_session知识点

    **Cookie** Cookie是一种在客户端和服务器之间传递信息的技术。...以上就是Cookie和Session的基本概念、创建、使用以及常见问题的解决方案。理解并熟练掌握这两者,对于开发Web应用程序至关重要。

    Cookie与Session的示例代码

    此外,需要注意的是,Cookie和Session都有生命周期。Cookie可以通过setMaxAge()方法设置有效期,过期后会被浏览器自动删除。Session则默认在一段时间无活动后自动失效,可通过setMaxInactiveInterval()调整这个时间...

    cookie机制和session机制的区别.docx

    如果不设置过期时间,cookie 的生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie 就消失了。这 种 生 命 期 为 浏 览 会 话 期 的 cookie 被 称 为 会 话 cookie。会话 cookie 一般不保存在硬盘上,而是保存在...

    session 和cookie 区别

    - **会话cookie**:没有设置过期时间,其生命周期仅限于当前的浏览器会话。一旦浏览器关闭,这类cookie将被自动清除。 - **持久cookie**:通过设置过期时间(如setMaxAge(60*60*24)),使其能够在用户关闭浏览器后...

    session的生命周期1

    以下是对`Session`生命周期、何时失效以及对浏览器要求的详细解释。 ### Session的生命周期 1. **创建**:当用户首次访问包含JSP、Servlet等动态内容的网页时,服务器会检查是否存在当前用户的`Session`。如果没有...

    servlet+cookie和Session

    Session则是在服务器端存储用户会话信息的一种方式,`request.getSession()`创建或获取Session,`session.setAttribute()`和`session.getAttribute()`用于设置和获取Session属性。需要注意,Session比Cookie更能保护...

    TP5 Session和Cookie

    同时,ThinkPHP5提供了丰富的中间件(Middleware)机制,可以方便地处理Session和Cookie的生命周期,如自动启动Session、加密Cookie值等。中间件是框架处理请求和响应流程中的拦截器,可以在请求进入控制器之前或...

Global site tag (gtag.js) - Google Analytics