您的位置:首页 > 编程语言 > ASP

【ASP.NET】asp.net中的对象

2016-07-16 22:52 696 查看

前言

        之前,我们用的都是静态的网页,能显示网页的内容,但是无法针对不同的网页浏览状况作出实时响应,而动态网页则可以做到这一点,基于静态网页,通过asp.net,我们就可以针对不同的需求浏览不同的网页,我们之所以能动态的浏览网页,原因之一就是由于asp.net中有很多强大的对象。接下来我们就来介绍一下asp.net中的那些对象。

Request

        用于检索从浏览器向服务器所发送的请求中的信息。在按下“提交”按钮时,Request对象将读取和提取通过HTTP请求发送的参数,在用户提交表单时,包含在输入控件中的数据将与表单一起被发回。(将客户端请求发送到服务器)。

Response

        将数据从服务器发送回浏览器(将服务器信息写给客户端)。

Application

        用于共享应用程序集信息,即,维护整个应用程序的一组变量,这些变量可以由所有访问该应用程序的用户共享。

Session

        存储在多个页面调用之间特定用户的信息。

Server

        用于访问服务器上的资源,例如,访问在服务器上创建和安装组件。

ObjectContext

        用于控制事务处理。该对象可用于提交或终止由ASP.NET脚本启动的事务。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.Data.SqlClient;

namespace CountPeople
{
public class Global : System.Web.HttpApplication
{

protected void Application_Start(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Server=.;database=CountPeople;uid=*;pwd=*;");
con.Open();
SqlCommand cmd = new SqlCommand("select * from countPeople", con);
int count = Convert.ToInt32( cmd.ExecuteScalar());
con.Close();
Application["total"] = count;
Application["online"] = 0;
}

protected void Session_Start(object sender, EventArgs e)
{
Session.Timeout = 1;//设定Session过期时间
Application.Lock();//锁定Application,防止发生和时间有关的错误
Application["total"] = (int)Application["total"] + 1;
Application["online"] = (int)Application["online"] + 1;
Application.UnLock();
}

protected void Application_BeginRequest(object sender, EventArgs e)
{

}

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{

}

protected void Application_Error(object sender, EventArgs e)
{

}

protected void Session_End(object sender, EventArgs e)
{

}

protected void Application_End(object sender, EventArgs e)
{
Application.Lock();
Application["online"] = (int)Application["online"] - 1;
Application.UnLock();
SqlConnection con = new SqlConnection("Server=.;database=CountPeople;uid=*;pwd=*;");
con.Open();
SqlCommand cmd = new SqlCommand("update countPeople set num=" + Application["total"].ToString(), con);
cmd.ExecuteNonQuery();
con.Close();
}
}
}


        这个Global应用程序文件里面存放了Application和Session对象,它相当于一个全局变量,在任何一个.cs文件中都可以访问得到。在页面初始化的时候,该程序就通过访问数据库将总人数获取出来并且将在线人数默认为0,然后,放在Application里的总人数加一,正在上机人数也加一;当退出页面的时候,将总人数保存到数据库,并且使在线人数减一。在页面的Page_Load事件中:

protected void Page_Load(object sender, EventArgs e)
{
this.lblTotal.Text = Application["total"].ToString();
this.lblOnline.Text = Application["online"].ToString();
}
         就可以直接得到Application中total和online两个变量。

同样看下面这个例子

protected void Button1_Click(object sender, EventArgs e)
{
if(TextBox1.Text=="a")
{
Session["flag"] = true;
Response.Redirect("Main.aspx");//重定向
}
}


        当单击事件发生时,判断TextBox1中字符是不是“a”,如果是,声明一个Session["flag"],使其为true,并且重定向到Main.aspx。

        在Main.aspx页面的加载事件中,我们需要判断这个页面是否由登录页后跳转而来,而不是直接输入地址来的,这时候,Session就派上用场了,如果我们登录页输入的用户名和密码正确的话,则Session["flag"]的值为true,那么,我们在Page_Load事件中:

protected void Page_Load(object sender, EventArgs e)
{
if(Session["flag"]==null || (bool)Session["flag"]!=true)
{
Response.Redirect("CountPeople.aspx");
}
}


        这就确定了我们的页面是由登录跳转而来。

总结

        在以后的学习和工作中,我们会经常和asp.net中的对象打交道,其中,我认为Application、Session和Cookie的区别尤为重要。这三者的区别,简单来说:

Application和Session

        Application是所有人都可以访问的,用于保存所有用户的公共的数据信息;

缺点:它串行化了对Application对象的请求,当网站访问量大的时候会产生严重的性能瓶颈.因此最好不要用此对象保存大的数据集合。

        而Session用于保存每个用户的专用信息,每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 它的生存期是用户持续请求时间再加上一段时间(用Session.Timeout设定),保存的数据量可大可小.当Session超时或被关闭时将自动释放保存的数据信息。

缺点:由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。

Session和Cookie

        一句话说明,就是cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案,也就是说,cookie数据存放在客户的浏览器上,session数据放在服务器上。

        如需要保存数据,最好是将登陆信息等重要信息存放为SESSION,其他信息如果需要保留,可以放在COOKIE中。


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  asp.net 对象