【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中。
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- 星外ASP.Net的安全设置相关说明
- C#托管堆对象实例包含内容分析
- C#、ASP.NET通用扩展工具类之TypeParse
- C#实现获取不同对象中名称相同属性的方法
- javascript asp教程第十一课--Application 对象
- 实现ASP.NET无刷新下载并提示下载完成的开发思路
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- C#、ASP.NET通用扩展工具类之LogicSugar
- VBS教程:对象-正则表达式(RegExp)对象
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- C#检查指定对象是否存在于ArrayList集合中的方法
- 程序中常用的种代码
- sql2008启动代理未将对象应用到实例解决方案
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- 在ASP.NET 2.0中操作数据之六十六:在TableAdapters中使用现有的存储过程
- ASP.NET页面间的传值的几种方法
- 在ASP.NET 2.0中操作数据之二十四:分页和排序报表数据