zoukankan      html  css  js  c++  java
  • 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各有各的特点吧。



  • 相关阅读:
    mqtt 服务器与客户端通讯
    MQTT--单片机实现即时通信
    source insight 如何建工程--以及快捷方式查找调用函数方法
    在联网时,两台linux服务器传输文件方法
    字符串截取函数-c语言
    strcpy(),strcat()的用法
    如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)
    如何把apdu[decode_len]打印出来
    SecureCRT中文乱码解决已设置UTF-8
    RobotFrameWork(五)控制流之if语句——Run Keyword If
  • 原文地址:https://www.cnblogs.com/hhx626/p/6010435.html
Copyright © 2011-2022 走看看