Application和Session以及Server的简单用法

在介绍今天的主题之前,我们先来讨论一下Global.asax文件是什么:

Global.asax文件是ASP.NET的应用程序文件,提供了在某个位置响应应用程序级或模块级的事件方法,在该文件中可以实现应用程序的安全性。

Global.asax文件的添加:右键项目——添加——新建项



Global.asax文件继承自HttpApplication类,它维护一个HttpApplication对象池,并在需要时将对象池中的对象分配给应用程序,Global.asax文件自动包含若干个事件,下面以一些常用的事件为例介绍:

(1)Application_Start:第一个应用程序开始事件

(2)Application_End:第一个应用程序结束事件

(3)Session_Start:第一个会话开始事件

(4)Session_End:第一个会话结束事件

其中Application是一个应用程序的实例,在程序第一次被访问的时候就建立此对象,用来维护各个会话的共享数据,其存储方式是一个对象类型。


Session就表示一个会话,也即一次浏览器页面的加载,当然在不同的浏览器或者不同页面开启时表示不同的会话。Session存储用户信息,会话期满后销毁对象。


下面结合一个实例解释什么是一个应用程序Application和一个会话Session,以及Server对象的几个方法。


Application_Start事件中编写代码,表示一个应用程序的开始,设置为0:Application.Add("count",0);

Session_Start中编写代码,每开始一个会话,就是count的数量加1:Application["count"]=(int)Application["count"]+1;


Page_Load事件中编写代码,输出应用程序的会话数量:

Response.Write(Application["count"].ToString());

运行程序:

打开一个浏览器:


当再次打开一个浏览器,同样访问这个应用程序:


表示此时的会话就变成了2个。


为了控制并发性的访问,我们通常在会话中对应用程序加锁,然后在解锁的机制:

protected void Session_Start(object sender, EventArgs e)
{
   //为了控制并发访问,要先加锁,然后在解锁
  Application.Lock();
  Application["count"]=(int)Application["count"]+1;
  Application.UnLock();
}


Servercontext的一个属性,是HttpServerUtility类的一个对象,其中包含了几个常用的方法,Server.HtmlDecode()Server.HtmlEncode() Server.UrlEncode()Server.MapPath

(前两个是用来处理HTML代码,进行转码的,第三个是用来处理超链接的,最后一个是返回Web服务器上指定的虚拟路径相对于的物理路径。)


简单的解释什么是Server的转码:

如果我们输入一个带有标记的字符,采用转码和不采用转码在客户端上输出的不一样:

一般情况下,我们在界面中打印文字:Response.Write("<h1>标题</h1>");


如果进行转码:Response.Write(Server.HtmlEncode("<h1>标题</h1>"));


此时输出的就是纯文本的形式,程序会把<h1>标题</h1>作为一个字符串使用,直接输出。


这篇博客再次介绍了几个常用的对象,以及对象使用方法,Application对象表示一个应用程序实例,Session表示一个会话,Server是一个获取当前请求的内部服务器对象。

记得之前在敲牛腩新闻发布系统的时候,牛老师就已经教我们用过这方面的知识了,当时不太明白,现在感觉又理解了不少,知识就是在这种反复中学会的!继续加油!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值