黑马程序员__Cookie Session

Cookie机制
主要是指服务器和浏览器间 互相传递 Cookie数据的一种 流程。
    1.服务器到浏览器:
    1.1服务器通过响应报文的 Set-Cookie 方式向浏览器发送 Cookie 键值对和失效时间和path等数据
    1.2浏览器接收到服务器的Set-Cookie命令之后,会自动的根据内容 在浏览器端创建Cookie文件。
    1.3浏览器会根据Cookie的失效时间,自动清除过期的Cookie文件。
    2.浏览器到服务器
    2.1当浏览器请求一个域名的时候,会自动在浏览器端读取 该域名下的Cookie文件,并将里面的键值对 装入 请求报文,发送给服务器。
    2.2当服务器接收到浏览器的请求报文里的Cookie命令后,会自动将里面的键值对 封装到 Request.Cookies集合中,供程序员使用。
Session

  • Session提供了一种把信息保存在服务器上的一种方式.它能存储任何数据类型包括自定义对象.
  • 每个客户端的Session是独立存储.
  • Session对象用于存储有关用户信息.
  • 在整个用户会话过程中(浏览器关闭之前)都会保留此信息.(保存SessionId的cookie丢失之前)
  • 当用户在应用程序中从一个网页浏览到另一个网页时,存储在Session中的变量不会被丢弃.
  • Session只可由该会话的用户访问(因为SessionId这个东东以cookie的方式保存在访问者浏览器的缓存里了)
  • 当前用户不能访问或修改他人的Session
  • 配置整个网站的Session失效时间
    <system.web>
       <sessionState timeout="20"></sessionState>
    </system.web>
  • Session有自动销毁机制(设置失效时间,默认就是滑动过期机制),如果时在设置的失效时间内浏览器没有和服务器发生任何交互,则Session会定时销毁.
  • 当浏览器禁用了 Cookie后,那么服务器就可以选择将 SessionId存入地址栏的url中来传递。
  • 可以看到Session机制并不是Http协议规定的,是ASP.Net实现的,现在PHP/jsp等大部分服务端技术实现了Session,原理都差不多.
注意:一般处理程序中,如果要使用 Session的话,必须实现IRequiresSessionState接口,这种情况下的接口叫【标识接口】,它不是为了规范子类的行为,也就无所谓在接口里定义方法。
它的存在,就是为类加上一个【标识】而已,当程序创建类的对象的时候可以检查是否有此【标识】.
当Session过期或中止时,服务器就会清除Session对象.
Session的操作:
  • 开始并为Session赋值:
    Session["uName"] = "dlc";
  • 取值:
    string strName = Session["uName"].ToString();
  • 销毁(取消/退出)
    Session.Abandon(); //销毁服务器端的Session对象
    Session.Clear(); //清空服务器端的Session对象里的键值对,Session对象并没有从Session池里销毁.
Session常用属性
属性 描述
SessionId 唯一用户会话表示符
TimeOut 用户超时(单位分钟),默认20分钟
Count 会话状态集合中的项目数

 

posted @ 2012-11-30 16:04  黑马—邓连超  阅读(370)  评论(0编辑  收藏  举报