黑马程序员__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集合中,供程序员使用。
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 | 会话状态集合中的项目数 |