【ASP.NET】Application、Server和Session对象

前言

        之前有篇博客,写了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"]="欢迎访问该网站";

控制访问

Application.Lock();
//...修改应用程序变量值得代码
......
......
......
Application.UnLock();
①Lock方法将锁定脚本中的所有变量,防止并发访问的冲突
②确保只有当前用户控制该界面
③当调用UnLock方法时当前用户将失去对应用程序的控制

数组变量

String [] job = new  String [4];
job[0] = "教员";
job[1] = "程序员";
job[2] = "售货员";
job[3] = "经理";
Application["j"] = job;
        在前台页面中,可直接通过Application获取到相应的值。
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为指定要编码的字符串。
例:
<%=Server.HTMLEncode("My name is XiaoShuai.<P>")%>
字符串经过HTML编码后,将得到一下结果:
My name is XiaoShuai. & 1t;P>

URLEncode

作用:将URL编码规则,包括转字符,应用到指定的字符串。
语法:Server.URLEncode(string)
参数string为指定要编码的字符串。
例:
<%response.write(Server.URLEncode("http://www.gmnet.com"))%>
运行结果如下:
http%3A%2F%2Fwww%2Egrnnet%2Ecom
        从结果可以看出,经过URL编码后,字符串中的英文保持不变,字符“:”变成了“%3A”,“/”变成了“%2F”,“.”变成了“%2E”。

MapPath

        将指定的相对或虚拟路径映射到服务器上的相应物理目录上,这里所指的虚拟路径是指Web服务器所建立的虚拟路径。语法:真实文件路径=Server.Mappath(path)
其中path指定要映射物理目录的相对或虚拟路径,path以一个正斜杠/或反斜杠\开始,则返回路径时视为完整的虚拟路径,若不以斜杠开始,则返回ASP文件中已有的路径相对的路径。(MapPath方法不支持相对路径语法“.”或“..”)。

例1:用服务器变量PATH_INFO映射当前文件的物理路径

<%=server.mappath(request.servervariables("PATH_INFO"))%>
输出结果:
d:\wwwroot\test\path.asp

例2:路径参数不以斜杠开始

<%=server.mappath("ggad.txt")%><br>
<%=server.mappath("test/ggad.txt")%><br>
输出结果:
d:\wwwroot\test\ggad.txt
d:\wwwroot\test\test\ggad.txt

例3:用斜杠字符指定返回的路径被视为在服务器的完整虚拟路径

<%=server.mappath("/test/ggad.txt")%><br>
<%=server.mappath("\test")%><br>
输出结果:
d:\test\ggad.txt
d:\test

例4:使用正反斜杠返回宿主目录的物理路径

<%=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方法,所以对它略感熟悉,相信其他的也一样,只要多去用,这些东西是没必要记住的。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值