Version 3.0
Application,Server
和 Session 对象
第五章
2
回顾
? HTML服务器控件
? 验证控件
? 代码隐藏
3
目标
? 讨论 Global.asax 文件
? 解释 Global.asax 文件中的事件
? 使用 Application 对象
? 使用 Server 对象
? 使用 Session 对象
4
Global.asax文件简介
? 存储于应用程序的根目录中
? 定义应用程序的边界
? 初始化应用程序级或会话级变量
? 连接到数据库
? 发送 Cookie
5
Global.asax 的事件 2-1
事件 何时激发
Application_OnStart
Application_OnEnd
在调用当前应用程序目录 ( 或其子目录 ) 的
第一个 ASP.NET 页面时激发 。
在应用程序最后一个会话结束时激发。此外,
在使用 Internet 服务管理器管理单元停止
Web 应用程序时也会激发。
Application_OnBegin
Request
在每次页面请求开始时 ( 理论上,
在加载或刷新页面时 ) 激发 。
6
Global.asax 的事件 2-2
事件 何时激发
Application_OnEnd
Request
在每次页面请求结束时 ( 即每次在浏览器
上执行该页面时 ) 激发 。
Session_OnStart 在每次新的会话开始时激发 。
Session_OnEnd 在会话结束时激发 。 ( 有关会话结束的方
法, 请参见 Session 对象 ) 。
7
Global.asax 的事件演示
8
HttpApplication类
? 定义 ASP.NET 应用程序中的所有应用程序对
象通用的方法、属性和事件
? 此类是由用户在 global.asax 文件中定义的应
用程序的基类
? 此类的实例是在 ASP.NET 基础结构中创建的,
而不是由用户直接创建的
? 一个实例在其生存期内被用于处理多个请求,
但它一次只能处理一个请求。
9
HttpApplicationState类和 Application
实例
? HttpApplicationState类启用 ASP.NET 应用程
序中多个会话和请求之间的全局信息共享
? Application对象获取应用程序的当前状态
? Application对象可以通过 HttpApplication类或
者 Page类的属性获得
10
Application 对象
? 表示 ASP.NET 应用程序的一个实例
Object[varName]
Application ["greeting"] = "欢迎访问我们的网站 ";
11
Application 对象实例演示
12
控制访问
Application.Lock();
//… 修改应用程序变量值的代码
……………
…………
……………
Application.UnLock();
Lock 方法将锁定脚本中的所有变量
确保只有当前用户控制该页面
当调用 UnLock 方法时当前用户将失去
对应用程序的控制
13
数组变量
String [] job = new String [4];
job[0] = "教员 ";
job[1] = "程序员 ";
job[2] = "售货员 ";
job[3] = "经理 ";
Application ["j"] = job;
<HTML><script Language ="C#" runat ="server" >
void Page_Load(Object Src,EventArgs E)
{ int i = 0; String[] k;
k = (String[])Application["j"];
for (i = 0; i<k.Length;i++)
{ Response.Write(k[i] + "<br>");
} } </script> </HTML>
14
HttpServerUtility类和 Server对象
? HttpServerUtility类提供用于处理 Web 请求的
Helper 方法
? Server 对象获取当前请求的内部服务器对象
? Server对象可以通过 HttpApplication类和 Page
类的属性来获得
15
Server 对象
Execute 和 Transfer
HTMLEncode
URLEncode
MapPath
属性 描述
ScriptTimeout 用于指定脚本在终止之前在服务器上运行的
时间周期。
MachineName 用于获取服务器的计算机名 。
Server.property | method
16
Execute 方法
<%@ Page Debug ="true"%><html>
<script language="C#" runat="server">
void clicked (Object Src,EventArgs E)
{Server.Execute("Ch5Ex5.aspx");}
</script><form runat ="server">
<asp:button id = "btnClick" onclick = "clicked" Text = "要 转移 执行,
请单击 此处 " runat = "server" />
</form></html>
17
Transfer 方法
Server.Transfer("Ch5Ex5.aspx");
18
HTMLEncode 方法
Response.Write(Server.HtmlEncode("<H1>是标题
标记的示例 </H1>"));
Server.HTMLEncode (string)
Response.Write("<br><H1> 是标题标
记的示例 </H1>");
19
URLEncode 方法
Response.Write(Server.UrlEncode("http://localhost/
code/map.aspx"));
Server.URLEncode (string)
20
MapPath 方法
<%@ Page Debug ="true"%>
<html>
<script language="C#" runat="server">
void Page_Load (Object Src,EventArgs E)
Response.Write(Server.MapPath("/Ch5Ex5.aspx"));
}
</script>
<form runat ="server">
</form>
</html>
Response.Write( Server.MapPath("/Ch5Ex5.aspx"));
Server.MapPath (path)
21
HttpSessionState类和 Session对象
? HttpSessionState 类提供对会话状态值以及会
话级别设置和生存期管理方法的访问
? Session对象是 HttpSessionState类的实例,可
以通过 HttpApplication类和 Page类的属性来
获得
22
Session 对象
包含用户特定信息
在会话中跟踪和监视用户信息
会话期满后销毁对象
23
Session变量演示
24
Session 事件和属性
属性 描述
SessionID 唯一用户会话标识符
TimeOut 用户超时
LCID 本地标识符
IsNewSession 如果已使用当前请求创建会话,则返回 True
Item 会话值的名称
Count 会话状态集合中的项目数
Session.collection | property | method
25
总结
? Global.asax文件以及 HttpApplication 类
? Application对象
? Server 对象
? Session 对象