[ASP] Application 对象、Session 对象、Cookie技术

Web应用程序的状态管理

0.应用程序级别状态管理-Application 对象
会话级别状态管理-Session 对象、Cookie技术

1.应用程序状态与Application对象(是HttpApplicationState类的实例,是ASP.NET内置对象)
1)Application对象有一个公开的状态集合-Contents,可以通过代码访问集合中的变量项
eg:Application["Message"]="MyString"; Application["StartTime"]=DataTime.Now;
      Application.Contents["Message"]="MyString";
      Application.Contents["StartTime"]=DataTime.Now;
2)应用程序状态的同步(为了多线程访问的安全性)
Application.Lock(); //锁定
Application["count1"] = (int)Application["count1"] + 1;
Application.UnLock(); //解锁

2.会话状态与Session对象
1)会话状态模式(在web.config文件中设置):
1>进程内会话模式 <sessionState>元素的mode属性为InProc
2>进程外会话模式 <sessionState>元素的mode属性为StateServer
3>SQLServer会话模式 <sessionState>元素的mode属性为SQLServer

2)可以通过Session内置对象(HttpSessionState类的实例)来实现会话状态。
Session对象的使用:
Session["stime"]=DateTime.Now; 或 Session.Contents["stime"]=DateTime.Now;

3.Cookie技术
1)Response对象和Request对象包含Cookie属性,该属性是HttpCookieCollection类的实例
HttpCookie类提供了创建/操作Cookie的各种方法,HttpCookieCollection是对应的集合类

2)在asp.net中操作Cookie
1>写Cookie(服务器—>客户端)
HttpCookie cookie1 = new HttpCookie("userinfo"); //创建一个名为userinfo的Cookie
cookie1.Values["username"]= txtUserName.Text;    //为Cookie添加信息
cookie1.Values["password"]= txtPassWord.Text;
cookie1.Expires = new DateTime(2008,12,12); //设置Cookie的有效期
Response.Cookies.Add(Cookie1); //将Cookie保存到客户端

2>读Cookie(客户端->服务器)
HttpCookie cookie1 = Request.Cookies["userinfo"]; //从客户端获取Cookie
Response.Write(cookie1.Values["username"]); //读取Cookie中的信息
Response.Write(cookie1.Values["password"]);


4.Application对象/Session对象的StaticObjects集合-服务器端对象标记
1)在Global.asax文件中,添加如下的标记:
<object id="idname" runat="server" scope="application" class="要实例化的.NET类名">
即为Application.StaticObjects集合添加了一个名为idname的元素,该元素是一个类的实例
示例:
------------------------------------------------------------------
//在Global.asax文件中,添加如下的标记:
//注意:class属性的值(类名)必须是带完整命名空间的类名,否则会报错
<object runat="server" scope="application" id="AppInfo" class="MyWebApp.Info"></object>

//在某页面的后台代码中
Info appInfo = (Info)Application.StaticObjects["AppInfo"]; //强制类型转换  
Response.Write(appInfo.counter); //输出Info类对象的counter属性

2)在Global.asax文件中,添加如下的标记:
<object id="idname" runat="server" scope="session" class="要实例化的.NET类名">
即为Session.StaticObjects集合添加了一个名为idname的元素,该元素是一个类的实例
示例:
------------------------------------------------------------------
//在Global.asax文件中,添加如下的标记:
//注意:class属性的值(类名)必须是带完整命名空间的类名,否则会报错
<object runat="server" scope="session" id="SessionInfo" class="MyWebApp.Info2"></object>

//在某页面的后台代码中
Info2 sessionInfo = (Info2)Session.StaticObjects["SessionInfo"]; //强制类型转换
Response.Write(sessionInfo.time); //输出Info2类对象的time属性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值