前言
之前有篇博客,写了asp.net中的对象,其中有提到过Application、Server和Session这三个对象,今天我们就来详细介绍一下这三个对象。
在介绍这三个对象之前,我们先来了解一下这三个对象的背景。
Global.asax
该文件存储于应用程序的根目录中,用于定义应用程序的边界,初始化应用程序级或会话级变量,它可以连接到数据库并发送Cookie。下面是它的几个事件。
Application_OnStart
在调用当前应用程序目录(或其子目录)的第一个ASP.NET页面时激发。
Application_OnEnd
在应用程序最后一个会话结束时激发,此外,在使用Internet服务管理单元停止Web应用程序时也会激发。
Application_OnBeginRequest
在每次页面请求开始时,(理论上,在加载或刷新页面时)激发。
Application_OnEndRequest
在每次页面请求结束时(即每次在浏览器上执行该页面时)激发。
Session_OnStart
在每次新的会话开始时激发。
Session_OnEnd
在会话结束时激发。
HttpApplication类
①定义ASP.NET应用程序中的所有应用程序对象通用的方法、属性和事件;②该类由用户在global.asax文件中定义的应用程序的基类;③它的实例是在ASP.NET基础结构中创建的,而不是由用户直接创建的;④一个实力在其生存期内被用于处理多个请求,但它一次只能处理一个请求。
HttpApplicationState类和Application实例
①HttpApplicationState启用ASP.NET应用程序中多个会话和请求之间的全局信息共享;②Application对象获取应用程序的当前状态;③Application对象可以通过HttpApplication类或者Page类的属性获得。
Application对象
表示ASP.NET应用程序的一个实例。语法:Application["greetion"]="欢迎访问该网站";
控制访问
[csharp] view plain copy
- Application.Lock();
- //...修改应用程序变量值得代码
- ......
- ......
- ......
- Application.UnLock();
①Lock方法将锁定脚本中的所有变量,防止并发访问的冲突
②确保只有当前用户控制该界面
③当调用UnLock方法时当前用户将失去对应用程序的控制
数组变量
[csharp] view plain copy
- String [] job = new String [4];
- job[0] = "教员";
- job[1] = "程序员";
- job[2] = "售货员";
- job[3] = "经理";
- Application["j"] = job;
在前台页面中,可直接通过Application获取到相应的值。[javascript] view plain copy
- string job = (String[])Application["j"];
- Response.Write(job[i]);//i=0/1/2/3
Server对象
语法:server.property | method
属性:
ScriptTimeout——用于指定脚本在终止之前在服务器上运行的时间周期。
MachineName——用户获取服务器的计算机名。
方法:
Execute
作用:将字符串当做命令来使用。
语法:Server.Execute("命令");
Transfer
Server.Transfer方法和页面重定向的方法相同。
HTMLEncode
作用:对指定的字符串应用HTML进行编码。
语法:Server.HTMLEncode(string);
参数string为指定要编码的字符串。
例:
[html] view plain copy
- <%=Server.HTMLEncode("My name is XiaoShuai.<P>")%>
字符串经过HTML编码后,将得到一下结果:
[html] view plain copy
- My name is XiaoShuai. & 1t;P>
URLEncode
作用:将URL编码规则,包括转字符,应用到指定的字符串。
语法:Server.URLEncode(string)
参数string为指定要编码的字符串。
例:
[html] view plain copy
- <%response.write(Server.URLEncode("http://www.gmnet.com"))%>
运行结果如下:
[html] view plain copy
- http%3A%2F%2Fwww%2Egrnnet%2Ecom
从结果可以看出,经过URL编码后,字符串中的英文保持不变,字符“:”变成了“%3A”,“/”变成了“%2F”,“.”变成了“%2E”。
MapPath
将指定的相对或虚拟路径映射到服务器上的相应物理目录上,这里所指的虚拟路径是指Web服务器所建立的虚拟路径。语法:真实文件路径=Server.Mappath(path)
其中path指定要映射物理目录的相对或虚拟路径,path以一个正斜杠/或反斜杠\开始,则返回路径时视为完整的虚拟路径,若不以斜杠开始,则返回ASP文件中已有的路径相对的路径。(MapPath方法不支持相对路径语法“.”或“..”)。
例1:用服务器变量PATH_INFO映射当前文件的物理路径
[html] view plain copy
- <%=server.mappath(request.servervariables("PATH_INFO"))%>
输出结果:
d:\wwwroot\test\path.asp
例2:路径参数不以斜杠开始
[html] view plain copy
- <%=server.mappath("ggad.txt")%><br>
- <%=server.mappath("test/ggad.txt")%><br>
输出结果:
d:\wwwroot\test\ggad.txt
d:\wwwroot\test\test\ggad.txt
例3:用斜杠字符指定返回的路径被视为在服务器的完整虚拟路径
[html] view plain copy
- <%=server.mappath("/test/ggad.txt")%><br>
- <%=server.mappath("\test")%><br>
输出结果:
d:\test\ggad.txt
d:\test
例4:使用正反斜杠返回宿主目录的物理路径
[html] view plain copy
- <%=server.mappath("/")%><br>
- <%=server.mappath("\")%><br>
输出结果:
d:\wwwroot
d:\wwwroot
Session对象
优点:
①包含用户特定信息;
②在会话中跟踪和监视用户信息;
③会话期满后销毁对象。
Session事件和属性
事件:
Session_Start
Session_End
属性:
SessionID:唯一用户会话标识符
TimeOut:用户超时
LCID:本地标识符
IsNewSession:如果已使用当前请求创建会话,则返回true
Item:会话值的名称
Count:会话状态集合中的项目数
HttpSessionState类和Session对象
HttpApplicationState类提供会话状态值以及会话级别设置和生存期管理方法的访问,Session对象是HttpApplicationState类的实例,可以通过HttpApplication类和Page类的属性来获得。
总结
这么多的知识点,光靠总结一次是远远不够的,目前,我用过MapPath方法,所以对它略感熟悉,相信其他的也一样,只要多去用,这些东西是没必要记住的。