第5章 页面状态管理

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 对象特点 

  1. Session 对象包含某一个用户的状态信息,此信息仅面向该连接,不与其他用户共享 
  2. 当会话超时或过期,服务器会即刻清除 Session 对象,释放所有资源 
  3. 会话通过 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 = " 你使出蛮荒之力捞出了一个漂流瓶!";

可以使用不同类型浏览器来模拟多个用户查看运行效果 

总结:

  1. 页面状态管理提供便于使用的机制来存储用户操作的信息 
  2. Session对象是ASP.NET中最常用的保存页面临时数据的对象 
  3. 在ASP.NET中,Cookie用于在客户端浏览器中存储少量信息 
  4. Application对象是应用程序级对象,用于在站点所有用户间共享信息,且可以在Web应用程序运行期间持久保持数据

给TA打赏
共{{data.count}}人
人已打赏
.NET

管理 .NET 项目中的依赖项更新

2022-8-22 10:01:55

.NET

第6章 三层架构

2022-8-22 16:14:05

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索