`

Cookie & Session总结

 
阅读更多

 

一、状态管理
1)什么是状态管理?

  将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理。
2)状态管理技术
cookie:
  a,什么是cookie?
   是一种客户端(浏览器)的状态管理技术。
   浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来;当浏览器再次访问服务器的时候,会将这些数据以cookie消息头的方式发送给服务器。
  b,创建cookie
   Cookie c = new Cookie(String name,String value);
   response.addCookie(c);
  c, 查询cookie
   //如果没有cookie,返回null
   Cookie[] request.getCookies();
   String cookie.getName();
   String cookie.getValue();
  d, 编码问题
   cookie的值只能是ascii字符,对于中文,需要将中文转换成相应的ascii字符串的表示形式。
    String URLEncoder.encode(String,String enc)
    //创建 new Cookie(String name,URLEncoder.encode(String,"utf-8"))
    String URLDecoder.decode(String,String)//取
    URLDecoder.decode(cookie.getValue(),"utf-8")
  e, cookie的生存问题
   默认情况下,浏览器会将cookie保存在内存里,除非浏览器关闭,cookie一直存在。
   用setMaxAge(int seconds)设置cookie保存时间
   该方法需要注意:
    (1) 单位是秒
    (2) seconds >0 : cookie会保存在硬盘上,超过指定的时间,浏览器会删除该cookie。
     seconds <0 : 缺省值(保存在内存里)
     seconds =0: 删除cookie,
     比如,要删除一个名叫addr的cookie:
        Cookie c = new Cookie("addr","");
        c.setMaxAge(0);
        response.addCookie(c);       
  f,cookie的路径问题
   f1:浏览器在向服务器的某个地址发请求时,会先比较cookie的路径与要访问的这个地址是否匹配,只有匹配的cookie才会发送。
   f2:cookie会有一个路径(是一个字符串),该路径默认情况下等于创建该cookie的组件的路径。
   比如,/web06_2/app1/addCookie.jsp创建的cookie,其路径就等于"/web06_2/app1"。
      /web06_2/**Cookie.jsp   error
      /web06_2/app1/**Cookie1.jsp  ok
      /web06_2/app1/sub/**Cookie2.jsp  ok
   f3: 只有要访问的地址是cookie的路径或者其子路径时,浏览器才会发送该cookie。
   f4:可以用setPath(String path);方法设置cookie的路径
      常见的使用是: setPath("/appname");访问该应用的所有资源都会带cookie过去了
  g,cookie的限制
  (1), cookie可以被用户禁止。
  (2), cookie能够保存的数据大小有限制(大约4k)。
  (3), cookie的个数有限制(浏览器在本地最大能够保存约300个左右的cookie)。
  (4), cookie不安全

session:
(1)什么是session?
  是一种服务器端的状态管理技术。
  浏览器访问服务器的时候,服务器会创建一个session对象(每一个session对象都有唯一的一个id号,一般称之为sessionId),默认情况下,服务器会使用cookie技术将sessionId发送给浏览器,浏览器会将sessionId保存下来。当浏览器再次访问服务器的时候,会将sessionId发送给服务器,服务器依据sessionId,就可以找到之前创建的session对象。
(2)如何获得session对象?
  a, 方式一:
   HttpSession s = request.getSession();
   等价于request.getSession(true)。
  b, 方式二:
   HttpSession s = request.getSession(boolean flag);
   当flag=true时:
    服务器会查看请求当中是否有sessionId,如果没有,则创建一个session对象;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,再创建一个新的session对象。
   当flag=false时:
    服务器会查看请求当中是否有sessionId,如果没有,会返回null;如果有sessionId,则依据sessionId查找对应的session对象,如果找到了,则返回;找不到,返回null。
(3)HttpSession中声明的几个常用方法
  setAttribute(String name,Object obj);
  //如果绑订名称对应的值不存在,返回null。
  Object getAttribute(String name);
  removeAttribute(String name);  
(4)session的超时
  1)服务器会将空闲时间过长的session对象从内存空间当中删除。服务器一般会有一个缺省的超时时间限制(30分钟)。
  2)可以修改超时限制
   对于tomcat,可以修改conf\web.xml,修改完成需要重新启动服务器。
   <session-config>
          <session-timeout>30</session-timeout>
      </session-config>
      3)编程的方式
       setMaxInactiveInterval(int seconds);
(5) 删除session
       invalidate();

二、session与cookie的区别
(1)cookie是一种客户端的状态管理技术,将状态写在浏览器端,
  而session是一种服务器端的状态管理技术,将状态写在web服务器上面。
(2) cookie有很多限制:
  a,可以被用户禁止
  b,cookie能够保存的数据比较小(大约4k),而且保存的个数也有限制(300个左右)。
  c,cookie不安全
  d,cookie只能保存字符串
  而session能够保存更多的数据,相对更安全,保存的数据类型更丰富。
  session会将所有的状态写在服务器端,所以服务器的压力比较大,而cookie没有这个问题。

小知识:如果用户禁止cookie,如何继续使用session(了解)
   (1)url重写
    在请求地址后面添加sessionId,一般由服务器来生成这个地址。
   (2)编程:
    //链接地址,表单提交地址
    a, response.encodeURL(String url);
    //重定向
    b, response.encodeRedirectURL(String url);
    //转发根本不用考虑

 

如客户端浏览器不支持 Cookie,Servlet 容器能够重写客户请求的 URL,把 Session ID 添加到 URL 信息中。

        HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url)

        该方法的实现机制为:
        ● 先判断当前的 Web 组件是否启用 Session,假如没有启用 Session,直接返回参数 url。
        ● 再判断客户端浏览器是否支持 Cookie,假如支持 Cookie,直接返回参数 url;假如不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。

        我们能够对网页中的链接稍作修改,解决以上问题:
        修改前:
            <a href=“maillogin.jsp“>
        修改后:
            <a href=“<%=response.encodeURL(“maillogin.jsp“)%>“>

 

分享到:
评论

相关推荐

    Cookie&Session;&Cache;.zip

    总结来说,Cookie、Session和Cache是Web开发中处理用户状态和优化性能的关键工具。理解它们的工作原理和正确使用方法,对于构建高效、安全的Web应用至关重要。而"Cookie&Session&Cache"这个压缩包则为开发者提供了...

    Day09_cookie & Session

    ### Day09_cookie & Session:详解Cookie与Session的用法及生命周期 在现代Web开发中,维护用户状态是一项至关重要的任务。Cookie与Session是实现这一目标的两种主要机制。本文将深入探讨这两种技术的工作原理、...

    14_尚硅谷_Cookie&Session_王振国 - 课堂笔记1

    总结,Cookie是Web开发中用于维持会话状态的重要工具,理解其工作原理和使用方式对于构建动态、交互性强的网站至关重要。正确地创建、读取和更新Cookie,以及结合Session使用,能够提升用户体验并保证数据安全。

    cookie&session

    总结一下,Cookie和Session是Web开发中不可或缺的身份认证和会话管理工具。Cookie存储在客户端,适用于简单的数据存储和用户跟踪;而Session存储在服务器端,适合存储敏感信息和大量数据。了解它们的工作原理和优...

    Cookie、Session和Token三者的区别及使用

    ### Cookie、Session与Token的区别及使用详解 #### 一、Cookie **定义**: Cookie是一种用于在客户端保持状态的方案。简单来说,当你访问一个网站时,该网站可能会在你的计算机上留下一些信息(如用户名、密码等),...

    Cookie&amp;Session&amp;JSP(十二).zip

    在Web开发中,Cookie、...总结来说,Cookie、Session和JSP是构建Web应用的关键技术。理解并熟练运用它们,有助于提升Web开发的效率和质量。在实际项目中,应根据需求合理选择和组合使用,以实现高效、安全的用户交互。

    cookie和session示例

    总结,Cookie和Session都是Web开发中不可或缺的部分,理解它们的工作机制并合理使用,有助于构建更高效、安全的Web应用。在实际项目中,往往结合使用两者,例如,将Session ID通过Cookie发送,实现会话跟踪。学习和...

    cookie和session

    ### Cookie与Session详解 在现代Web开发中,保持用户的会话状态是一项基本需求。通过Cookie与Session机制,服务器能够识别并处理用户的状态信息,从而实现更丰富的交互体验。本文将详细解析Cookie与Session的工作...

    经典收藏Cookie和Session

    ### 经典收藏:Cookie与Session机制详解 #### 一、Cookie机制与Session机制的区别 在Web开发中,为了维持用户的会话状态,通常有两种常用的技术:Cookie与Session。这两种技术各有特点,适用于不同的场景。 - **...

    javaweb之cookie和session的应用

    总结,理解并熟练运用Cookie和Session是Java Web开发中的必备技能。正确地管理和使用它们,能够提升用户体验,保证应用的安全性和效率。在实际项目中,还需要结合其他技术,如Token、Cache等,以实现更高效和安全的...

    asp.net-c#写的一个cookie和session登陆小实验

    总结来说,这个实验旨在帮助开发者理解如何在ASP.NET+C#环境中利用Cookie和Session进行用户状态管理,这对于构建具有用户登录功能的Web应用至关重要。通过实践,开发者可以更好地掌握这两种技术的使用,以及它们在...

    session之用户交互间隔&&session持久化

    - **创建**:当用户第一次访问服务器时,如果没有提供有效的 Session ID,则服务器会为该用户创建一个新的 Session,并将 Session ID 存储在 Cookie 中返回给客户端。 - **销毁**:Session 的销毁可以由服务器自动...

    session实质就是cookie

    ### Session与Cookie关系详解 #### 一、会话管理概览 在Web开发中,会话管理是一项重要的技术,它负责维护用户与服务器之间交互的数据。通常,这种交互包括用户的登录状态、购物车中的商品信息等。为了实现这些...

    cookie 和 session 保存的异同

    总结来说,Cookie和Session各有优缺点,Cookie适合存储少量、不敏感的数据,并且不需要服务器资源,而Session则适合存储更多、敏感的数据,但会消耗服务器资源。在实际应用中,开发者应根据需求和安全性考虑选择合适...

    cookie机制和session机制的区别

    ### Cookie机制与Session机制的区别及关系 在现代网络应用中,服务器端与客户端之间的状态保持是至关重要的,尤其是在无状态的HTTP协议下。Cookie机制与Session机制是两种常用的状态管理方式,它们各自拥有独特的...

    Cookie与session机制详解

    ### Cookie与Session机制详解 #### 一、Cookie与Session的概念及区别 在Web开发中,为了保持用户的状态信息,通常会用到两种技术:Cookie和Session。这两种技术都是用来跟踪用户的浏览活动,但它们的工作原理有所...

    JavaWeb基础-Cookie和Session的简单使用案例

    总结起来,Cookie和Session是JavaWeb开发中重要的用户会话管理工具,理解它们的工作原理和应用场景,对于构建高效、安全的Web应用至关重要。通过实际的登录案例,我们可以直观地看到如何在项目中运用这两种技术,以...

    Servlet对Cookie和Session的管理源码实例

    总结,Servlet通过Cookie和Session提供强大的会话管理能力。理解并熟练运用这些技术,可以构建更加健壮、安全的Web应用程序。在实际项目中,应根据需求选择合适的会话跟踪策略,并合理配置过滤器和监听器,以实现...

    cookie+session实现的单点登录案例

    总结,本案例旨在帮助你理解Cookie和Session如何协同工作来实现单点登录,以及如何与第三方社交平台集成,实现便捷的登录体验。通过学习和实践,你将能够构建自己的SSO系统,并具备处理复杂登录场景的能力。

Global site tag (gtag.js) - Google Analytics