ASP.NET(二):Application、Session和Server对象
导读:在上篇博客中,总结了:Reques对象和Response对象的区别,以及IsPostBack属性的用法。其中说明Asp.net有6大对象,那么,这次就介绍剩下的3个对象,分别是:Application对象、Session对象和Server对象。
一、基础把握
1,HttpApplication 类
定义 ASP.NET 应用程序中的所有应用程序对象通用的方法、属性和事件。此类是用户在 global.asax 文件中所定义的应用程序的基类。
1,1,Application对象
为所有用户提供共享信息,当站点服务器开启时,Application对象被创建。当站点关闭时,Application对象被销毁。比如说,服务器重新启动,Application中的信息就丢掉了。
1,1,1,Application对象的方法
Lock:锁定脚本中所有变量,确保只有当前用户控制该页面,当调用Unlock方法是,当前用户将失去对应用程序的控制。
说明:防止多人同时操作数据,并发控制。
2,HttpServerUtility类
提供用于处理 Web 请求的 Helper 方法。
2.1,Server对象
Server 对象提供对服务器上的方法和属性的访问。其中大多数方法和属性是作为实用程序的功能服务的。
2,1,1,Server对象属性
ScriptTimeout:用于指定脚本在终止之前在服务器上运行的时间周期;MachineName:用于获取服务器的计算机名
2,1,2,Server对象方法
Execute、Transfer、HTMLEncode等。
3,HttpSessionState类
提供对会话状态值以及会话级别设置和生存期管理方法的访问。
3.1,Session对象
Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。
附注:
global.asax文件:是一个文本文件,它提供全局可用代码。这些代码包括应用程序的事件处理程序以及会话事件、方法和静态变量。有时该文件也被称为应用程序文件。
二、图形说明
说明:我们可以讲服务器看做是Server对象。然后,可以将部署在服务器上的应用程序,看做是Application对象。每个客户端请求服务器,建立的链接,称为一个会话,也就是一个Session对象。
三、实例应用
简单的做一个历史访问人数和当前在线人数的统计,通过对Application对象、Server对象和Session对象的应用。
1,Web窗体设计
说明:程序被部署时,在线和历史均为0。每一次会话开始增添1个,会话结束减少一个。
2,代码(挑主要)
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">namespace WebApplication2
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Application["totol"] = 0;
Application["online"] = 0;
} protected void Session_Start(object sender, EventArgs e)
{
Application.Lock();
Application["totol"] = (int)Application["totol"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
}
protected void Session_End(object sender, EventArgs e)
{
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
}
</span></span>
说明:这是在global.asax文件中的代码。有时候打开VS,里面没有这个文件,得手动添加。项目文件——添加——新建项——全局应用程序类
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:24px;">{
public partial class WebForm3 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
this.Label3.Text = Application["totol"].ToString();
this.Label4 .Text =Application ["online"].ToString ();
}
}
}</span></span>
3,结果
说明:每打开一次会话(用客户端浏览器访问一次),在线人数就+1,关闭一次会话就-1(人数不会立刻减少,有延时)。如果要想马上看到效果,就得对session的timeout属性进行设置。
四、个人感受
Asp.net的六大对象就简单的介绍完了。在学习这一部分的过程中,就想起了做机房的时候,在线人数的显示,是通过查数据库来实现的。第一次做机房的时候,就在想别的在线人数的显示是怎么回事。感觉挺容易的,但当时实现起来真的很难。
现在呢,才发现,在Web程序中,仅仅只是通过一个对象的属性就可以解决了。额,这也算是C/S 和B/S各有各的特点吧。
ASP.NET(二):Application、Session和Server对象的更多相关文章
- Asp.net 服务器Application,Session,Cookie,ViewState和Cache区别
2.8 Context 的使用Context 对象包含与当前页面相关的信息,提供对整个上下文的访问,包括请求.响应.以及上文中的Session 和Application 等信息.可以使用此对象在网页之 ...
- ASP.NET:Application,Session,Cookie,ViewState和Cache之间的区别(转)
在ASP.NET中,有很多种保存信息的对象.例如:Application,Session,Cookie,ViewState和Cache等,那么它们有什么区别呢?每一种对象应用的环境是什么? 为了更清楚 ...
- Application对象、Session对象、Cookie对象、Server对象初步认识
Application对象:记录应用程序参数的对象 用于共享应用程序级信息,即多个用户共享一个Application对象.在第一个用户请求ASP.NET文件时,将启动应用程序并创建Applicatio ...
- ASP.NET Application,Session,Cookie和ViewState等对象用法和区别 (转)
在ASP.NET中,有很多种保存信息的内置对象,如:Application,Session,Cookie,ViewState和Cache等.下面分别介绍它们的用法和区别. 方法 信息量大小 作用域和保 ...
- ASP.NET 使用application和session对象写的简单聊天室程序
ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览 ...
- ASP.NET整理:Cookie,Application,Session,页面生命周期
一.设置Cookie的2种方式 1. Repsonse.Cookie[“名”] = 值; 2. HttpCookie hcCookie = new HttpCookie(“名”,值); h ...
- ASP.NET之Application、Session和Cookie的差别
在Asp.net中Application.Session和Cookie都能够保存信息,那么它们有什么不同呢? 一.首先Application是在server端建立一个状态变量,存储于server的全局 ...
- 初识 Asp.Net内置对象之Server对象
Server对象 Server对象定义了一个于Web服务器相关联的类提供对服务器上的方法和属性的访问,用于访问服务器上的资源. Server对象的常用属性 属性 MarhineName 获取服务器 ...
- 转载ASP.NET 状态管理Application,Session,Cookie和ViewState用法
转载原地址 http://www.cnblogs.com/cuishao1985/archive/2009/09/24/1573403.html ASP.NET状态管理 APPlication,Ses ...
随机推荐
- plpgsql: 动态插入数据 1
--目标:1.建立一个函数实现 输入一个表名(tableName)tableName,一个JSON串{feildName1:feildVale1,feildName2:feildVale2} -- 然 ...
- java.lang.ClassCastException android.widget.RelativeLayout LayoutParams 异常
1.在xml布局文件如下所示: <RelativeLayout android:layout_width="match_parent" android:layout_heig ...
- Azure Powershell blob中指定的vhd创建虚拟机
#此脚本用于 Azure 存储账户中已有 vhd 镜像文件创建虚拟机,一般用于做好镜像测试 #----------------------------------------------------- ...
- Servlet Context
Servlet Context Container Provider 负责提供ServletContext的实现. A ServletContext is rooted at a known path ...
- STL:string类中size()与length()的区别
结论是:两者没有任何区别 解释: C++Reference中对于两者的解释: 两者的具体解释都一模一样: 理解: length是因为C语言的习惯而保留下来的,string类最初只有length,引进S ...
- 【page-monitor 前端自动化 下篇】 实践应用
转载文章:来源(靠谱崔小拽) 通过page-diff的初步调研和源码分析,确定page-diff在前端自动化测试和监控方面做一些事情.本篇主要介绍下,page-diff在具体的实践中的一些应用 核心d ...
- BCB:AnsiString和String的区别
AnsiString和String的区别.使用 本文转自:http://www.bianceng.cn/c/index.htm 16.C/C++语言在CB中的一些特定用法 2)AnsiString是从 ...
- 解决wpf popup控件遮挡其他程序的问题
public class PopupNonTopmost : Popup { public static DependencyProperty TopmostProperty = Window.Top ...
- 在64位的linux中运行32位的应用程序
常规做法,先添加32bit架构: sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install libc6:i3 ...
- bootstrap历练实例:标签式的导航菜单
本章将讲解bootstrap提供的用于定义导航元素的一些选项,它使用相同的标签和基类.nav.Bootsrtap也提供了一个用于共享标记和状态的帮助器类.改变修饰的class,可以在不同的样式间进行切 ...