【转】学习总结--Cookie & Session总结

转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view

一、状态管理
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/findCookie.jsp   error
 
    /web06_2/app1/findCookie1.jsp  ok
 
    /web06_2/app1/sub/findCookie2.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 & Session总结,码迷,mamicode.com

时间: 2024-10-18 05:15:52

【转】学习总结--Cookie & Session总结的相关文章

Web安全测试学习笔记(Cookie&amp;Session)

一,Session:含义:有始有终的一系列动作\消息1, 隐含了"面向连接" 和"保持状态"两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构"把××保存在session里" 二, http 协议本来是无状态的,所以引进了cookie和session机制来保持连接状态 cookie与session 机制之间的区别与联系:cookie机制采用的是在客户端保持状态的方法session机制采用的是在服务器端保持

Django学习手册 - cookie / session

cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,salt="加密盐",....) 参数: key 键 value="" 值 max_age=None 超时时间 expires=None 超时日期 path="/" cookit生效的路径,/表示根路径,特殊的,跟路径的cookie可以被任何url被任

Javaweb学习笔记5—Cookie&amp;Session

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍  今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.会话管理技术概述 1 什么是会话? 这里的会话指的是web开发中的一次通话过程,当打开浏览

Servlet学习(七)——会话技术cookie&amp;session

一.会话技术简介 1.存储客户端的状态 例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态.会话技术是帮助服务器记住客户端状态(或者说区分客户端,是张三登录的还是李四登录的) 2.会话技术 从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话.会话技术就是记录这次会话中客户端的状态与数据的. 会话技术分为Cookie和Session: Cookie:数据

node(4)express 框架 EJS模板,cookie, session的学习

一.EJS 概述:前端咱们使用过的一个模板套路,是underscore的套路.接下来EJS它属于后台工程师人的模板. https://www.npmjs.com/package/ejs 官网地址 特点: Control flow with <% %>             流程控制语句用的是<% %>   :例如if   for循环等等 Escaped output with <%= %> (escape function configurable)     如果有赋

node学习之cookie和session

c什么是cookie Cookie设计的初衷是 维持浏览器和服务端的状态.http是无状态的,服务端不能跟踪客户端的状态. 浏览器第一次向服务器发送请求,服务器会返回一个cookie给客户端浏览器,浏览器下一次发送请求时,会携带cookie. 而node.js 的框架express 因为保持高性能, 没有封装太多的功能,而是按需加载的形式, 引入自己需要的中间件.而cookie 常用的插件是cookie-parser 读取cookie: 需要借助cookie-parser. //引入cookie

Python Web学习笔记之Cookie,Session,Token区别

一.Cookie,Session,Token简介 # 这三者都解决了HTTP协议无状态的问题 session ID or session token is a piece of data that is used in network communications (often over HTTP) to identify a session, a series of related message exchanges. Session identifiers become necessary

Django学习之Cookie和Session

一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除Cookie 4.Cookie版登陆校验 三.Session 1.Session的由来 2.Session流程解析 四.Django中Session操作 1.相关方法 2.Session版登陆验证 4.Django中的Session配置 一.Cookie 1.Cookie的由来 大家都知道HTTP协

JavaWeb之Cookie&amp;Session(六)

简介 现在每天整理笔记,第一是巩固知识,第二是把学过的变成自己的.虽然笔记内容很普通,但掌握能这些,变成自己的知识,也是挺不错的 学习技巧 Cookie和Session学习时,明白如何使用以及原理.剩下时间大量练习案例,增加对Cookie和Session的认识 Cookie对象 0. 会话管理 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话 会话过程中要解决的问题 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产