Session对象:
该类为当前用户会话提供信息,还提供对于可用于可用于储存信息的会话范围的缓存访问,以及控制如何管理会话的方法。
可以储存用户会话所需的信息,当用户在web页之间进行跳转,储存在session的信息不会丢失,而是一直储存在,知道过期或被放弃。
Session数据(除了SessionId)储存在服务器中,对用户来说是透明的。
每个session都一个唯一的sessionid,所以可以用sessionid来索引。
获得sessionid有两个方法:
a.使用cookie来保存sessionid,但是有些用户禁用cookie;
b.使用改装的url。
使用session并不免费,虽然可以解决很多问题但是服务器迫使储存额外的信息,导致服务器负担增大。
使用改装url来保存sessionid
Session的常用的属性和方法
属性 说明
count 获取会话状态下的 Session对象的个数
TimeOut Serssion的生存期
SessionId 用于标识会话的唯一编号
方法 说明
Abandon 取消当前的会话
Add 向当前会话状态集合添加一个新项
Clear 清除前挡会话的所有键和值
Remove 删除会话状态集合的项
RemoveAll 删除所有会话的状态值
RemoveAt 删除指定索引处的项
Session对象具有两个事件:Session_OnStart事件(创建一个Session对象触发) 与 Session_OnEnd事件(任何结束Session时触发)
Session对象的储存:
1.客户端储存(SessionId)
a.cookie来储存
b.用改装的url来储存
<sessionState
mode="InProc"
cookieless="true"
timeout="50"
></sessionState>
2.服务器储存
a.储存到进程中 mode="InProc"
b.储存到进程外 mode="StateServer"
c.储存到SQL Server中 mode="SQLServer"
Session对象应用
直接赋值:
Session["session"]="session";//赋值后会自动生成一个SessionId
Session对用户来说就是一个全局变量,在子页面中可以访问到Session
Session的丢失:
a.用户关闭浏览器或重启浏览器
b.用户通过另外一个浏览器窗口进入相同的页面,尽管当前的Session继续存在,在新开的浏览器窗口也找不到原来的Session
c.Session过期
d.被注销了
前两种情况,Session还继续存在内存之中,直到Session过期死掉。在没有过期之前程序员是找不到那个Session,因为SessionId已经丢失了,也就无法从Session集合中索引到该Session了
应用:
Session练习.aspx
protected void Page_Load(object sender, EventArgs e)
{
Session["a"] = "dddd";
Response.Redirect("web1.aspx");
}
web1.aspx
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Session["a"].ToString();
Session["a"] = "aaaaaa";
}