5.1 Cookie 对象
5.1.1 Cookie 对象的介绍
在 ASP.NET 中,Cookie 用于在客户端浏览器中存储少量信息,通常存放非敏感的用户信息,保存的时间可以根据用户的需要设置
语法:
Response.Cookies[“名称”].Value= 值 ; String 变量名 =Request.Cookies[“名称”].Value;
HttpCookie cookie = new HttpCookie(“名称”, 值 ); Response.Cookies.Add(cookie);
注意:
如果没有设定 Cookie 的过期时间,则 Cookie 的生命周期仅保持到关闭浏览器为止。如果将过期时间设定为 MaxValue,则 Cookie 永不过期。由于大多数浏览器对 Cookie 的大小限制为 4KB,所以 Cookie 中不能存储大量数据。如果浏览器设定了禁用 Cookie,则程序中用到的 Cookie 对象无效。
…
<% if(Request.Cookies["UserName"]==null) {%>
…
<div>
<asp:Button ID="btnLogin" runat="server" Text=" 登录 " OnClick="btnLogin_Click" />
</div>
<%}else{ %>
你已经登录,用户名为:<%=Request.Cookies["UserName"].Value %>
<%} %>
…
protected void btnLogin_Click(object sender, EventArgs e)
{
HttpCookie cookie = new HttpCookie("UserName", this.txtUserName.Text);
cookie.Expires = DateTime.Now.AddDays(3);
Response.Cookies.Add(cookie);
}
5.2 Session 对象
5.2.1 Session 对象的介绍
Session 对象用于存储在多个页面之间传递的特定用户的信息
语法:
赋值:Session[“名称”]= 值 ; 取值:变量 =Session[“名称”];
Session 对象特点
- Session 对象包含某一个用户的状态信息,此信息仅面向该连接,不与其他用户共享
- 当会话超时或过期,服务器会即刻清除 Session 对象,释放所有资源
- 会话通过 SessionID 传递状态信息,客户端仅知道 SessionID,但对其状态信息不可见
- Abandon :取消当前会话
- Clear :从会话对象中移除所有的键和值
- Remove :删除会话对象中的项
UserIndex.aspx 页面页面代码
<!DOCTYPE html>
<form id="form1" runat="server">
<div>
用户名:<%= Session["UserName"] %>
</div>
</form>
protected void btnLogin_Click(object sender, EventArgs e)
{
if (this.txtUserName.Text.Trim() != string.Empty)
{
Session["UserName"] = this.txtUserName.Text;
Response.Redirect("UserIndex.aspx");
}
}
5.3 Application 对象
5.3.1 Application 对象的介绍
Application 对象用于共享应用程序级信息,即多个用户共享一个 Application 对象
语法:
赋值:Application[“名称”]= 值 ; 取值:变量 = Application[“名称”];
Application 对象与 Session 对象的主要区别是
- Session 对象中的数据只能被单个用户在多个页面中访问和修改,会话结束后就不能访问
- Application 对象中的数据能被多个用户在多个页面中访问并修改,会话结束后其他用户还能访问 Application 中的数据,只有 Web 应用程序结束后才能销毁
注意;
只有当所有用户关闭了 Web 应用程序连接后,Web 应用程序才会结束。因为一般这种情况很难遇到,所以保存在Application 中的数据将会在内存中保存很长时间,因此一般不建议将大量数据保存在 Application 对象中
示例:
List<string> bottles = Application["bottles"] as List<string>;
if (bottles == null)
{
bottles = new List<string>();
bottles.Add(" 什么也没捞到!再捞捞看!");
bottles.Add(" 哇,好大一只螃蟹!");
bottles.Add(" 哇,捞到一只大龙虾!");
bottles.Add(" 哇,捞到一条鲸鱼!");
}
// 保存留言到漂流瓶集合中
bottles.Add(" 漂流瓶:" + txtMsg.Text);
// 将漂流瓶集合保存到 Application 对象中
Application["bottles"] =bottles;
txtMsg.Text = "";
lblMsg.Text = " 你使出蛮荒之力捞出了一个漂流瓶!";
可以使用不同类型浏览器来模拟多个用户查看运行效果
总结:
- 页面状态管理提供便于使用的机制来存储用户操作的信息
- Session对象是ASP.NET中最常用的保存页面临时数据的对象
- 在ASP.NET中,Cookie用于在客户端浏览器中存储少量信息
- Application对象是应用程序级对象,用于在站点所有用户间共享信息,且可以在Web应用程序运行期间持久保持数据