Session对象、Application对象

来源:互联网 发布:如何做数据分析 编辑:程序博客网 时间:2024/04/28 04:45

 

public class Global : System.Web.HttpApplication
 {
 
protected void Application_Start(object sender, EventArgs e)
 {
 Application["count"]=0;
 Application["ChatLog"] = "你好,欢迎来到聊天室!";
 
}

 
<%@ Page Xlanguage="C#" AutoEventWireup="true" CodeBehind="在线聊天.aspx.cs" Inherits="_10._15聊天记录.在线聊天" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title></title>
</head>
<body>
 <form id="form1" runat="server">
 <div>
 <table align="center">
 <tr><td>
 <asp:Label ID="Label1" runat="server" Text="在线聊天"></asp:Label>
 </td><td></td></tr>
 
<tr><td></td><td>
 <asp:TextBox ID="txtChatBox" runat="server" Height="180px" TextMode="MultiLine"
Width="245px"></asp:TextBox>
 </td></tr>
 <br />
 <tr><td>
 <asp:Label ID="Label2" runat="server" Text="请输入你的姓名:"></asp:Label>
 </td><td><asp:TextBox ID="txtName" runat="server"></asp:TextBox>
 </td></tr>
 <br />
 <br />
 <tr><td>
 <asp:Label ID="Label3" runat="server" Text="请输入你的消息:"></asp:Label>
 </td><td><asp:TextBox ID="txtMessage" runat="server" Height="162px" TextMode="MultiLine"
Width="245px"></asp:TextBox></td></tr>
<br />
 <br />
 <tr><td></td><td>
 <asp:Label ID="Label4" runat="server" Text="请选择表情:"></asp:Label>
 <asp:DropDownList
 ID="DropDownList1" runat="server" Xonselectedindexchanged="Page_Load">
 <asp:ListItem Value="1">得意</asp:ListItem>
 <asp:ListItem Value="2">坏笑</asp:ListItem>
 <asp:ListItem Value="3">吃惊</asp:ListItem>
 <asp:ListItem Value="4">害羞</asp:ListItem>
 <asp:ListItem Value="5">鄙视</asp:ListItem>
 </asp:DropDownList>
 </td></tr>
 <tr><td>
 <asp:Button ID="btnSet" runat="server" Text="发送内容" Xonclick="btnSet_Click" />
 </td><td>
 <asp:Button ID="txtClear" runat="server" Text="清除内容" Xonclick="txtClear_Click"
/></td></tr>
 </table>
 </div>
 </form>
</body>
</html>
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace _10._15聊天记录
{
 public partial class 在线聊天 : System.Web.UI.Page
 {
 protected void Page_Load(object sender, EventArgs e)
 {
 if (!IsPostBack)
 {
 this.txtChatBox.Text = Application["ChatLog"].ToString();
 }
 
}
 
protected void btnSet_Click(object sender, EventArgs e)
 {
 string newMessage = this.txtName.Text + ":" + this.txtMessage.Text+"\n"+Application["ChatLog"].ToString ();
 if (newMessage.Length > 500)
 {
 newMessage = newMessage.Substring(0, 499);
 }
 Application["ChatLog"]=newMessage;
 txtChatBox.Text = Application["ChatLog"].ToString();
 this.txtMessage.Text = "";
 }
 
protected void txtClear_Click(object sender, EventArgs e)
 {
 Application["ChatLog"]="";
 txtChatBox.Text=Application["ChatLog"].ToString();
 }
 
}
}


Session
当用户请求网页时,服务器会检查是否存在这个用户的SessionID,如果用户有有效的SessionID,就代表用户处于一定的活动状态,并允许用户继续操作这个应用程序,如果没有SessionID,服务器对象会创建一个Session对象。
Session对象用于存储用户的信息,而这个信息是从用户登录开始,一直生存到用户关闭浏览器才会消失,当再次打开浏览器时,又会重新创建。

Session对象的属性
属   性  说   明
Count         获取会话状态集合中Session对象的个数
Contents 获取对当前会话状态对象的引用
Keys          获取存储在会话中的所有值的集合
SessionID  获取用于标识会话的唯一会话ID
TimeOut         获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限
Mode         获取当前会话状态模式

Session对象的方法
方  法   说  明
Add 新增一个Session对象
Clear 清除会话状态中的所有值
CopyTo 将会话状态值的集合复制到一维数组中
Remove 删除会话状态集合中的项
RemoveAll 清除所有会话状态值

Session的存储
在ASP.NET中,Session的存储方式有三种
使用那种存储方式是在Web.config文件中进行设置的,先来看Web.config中关于Session的一段代码片断:
<sessionState mode="InProc" cookieless="false" timeout="20" />
还有一种Mode的值为StateServer,这种模式的特别之处是,重新启动IIS时,所保存的Session值是不会丢失的。
最后一种Mode属性的值为SQL Server,它是指该会话状态保存在有SQL Server数据库的计算机上,并且当数据库重启服务时,会话数据依然会保留。


Application对象
Application对象是HttpApplicationState类的一个实例。
客户端第一次访问ASP.NET应用程序的虚拟目录并请求URL资源时创建Application对象。
数据可以在Application对象内部共享,用于多用户共享访问,一个网站可以有多个Application对象,而一个对象破坏后,不会影响到其他的对象。

Application对象的属性
属  性 说  明
AllKeys 获取HttpApplicationState集合中的访问键
Count 获取HttpApplicationState集合中的对象数

Application对象的方法
方  法 说  明
Add 新增一个新的Application对象变量
Clear 清除全部的Application对象变量
Get 使用索引关键字或变数名称得到变量值
GetKey 使用索引关键字来获取变量名称
Lock 锁定全部的Application变量
Remove 使用变量名称删除一个Application对象
RemoveAll 删除全部的Application对象变量
Set 使用变量名更新一个Application对象变量的內容
UnLock 解除锁定的Application变量

Application对象的使用
如果要使用Application对象,首先需要在网站根目录添加一个文件:Global.asax(全局应用程序类)。它是应用程序全局启动文件,文件内容如下所示:
参见教材P96
其中:
Application_Start:代表应用程序启动时触发的事件。
Application_End:代表应用程序结束时触发的事件。
Application_BeginRequest:代表请求开始时触发的事件。
Application_EndRequest:代表请求结束时触发的事件。
Application_Error:应用程序出错时触发的事件,如果有信息,必须在页面的Page指令中添加Debug=“true”。
Session_Start:启动一个Session时触发。
Session_End:结束一个Session时触发。
Application 与Session类似,不同的是Application用于ASP.NET应用程序中多个会话和请求之间的全局信息共享,而Session是用于ASP.NET应用程序中一个会话内部的局部信息共享。
Application的典型应用:在线人数统计、聊天室

Application语法:
 Application["one"] = "直接设置的Application值";
 Application.Add("two","Application.add()方法添加的值");
 this.Response.Write(Application["one"]+"<br/>“
+Application["two"]);