ASP.NET中一些内置对象的概念
为实现特定功能,需要获取前一页的相关信息
浏览器和web服务器之间的连接时所谓的“无状态连接”,连接过程如下:
1、连接到服务器
2、告诉服务器访问者希望访问的内容
3、服务器返回访问者需要的内容
4、和服务器断开连接,同时丢失所有的用户信息
<1>Application(服务器端,整个应用程序的生命期)
Application原理是在服务器端建立一个状态变量,用来存储所需信息。明白二点:1.这个状态变量建立在内存中;2.这个变量可以被该网站的所有也页面访问。故此变量只用于存储一些公用信息,而不存储私人信息。Application时全局的,如果出现服务器故障(断电,重启),就会出现丢失变量的情况,可以增加一个全局文件Global.asax
这样的话,一旦Web应用程序启动,ASP.NET会首先搜寻Global.asax文件,然后进入
void Application_Start(object sender, EventArgs e)函数,运行其中代码。
Application对象是HttpApplication类的一个实例。生命周期:IIS启动并且有人开始连接时(Application_Start()函数触发)—>……àIIS关闭或若干时间无人连接时(Application_End()触发)。
Application.Lock(); …… Application.UnLock();在会话开始和结束时,应将Application对象加锁,因为Application对象是共享资源,因此要确保在同一时刻只有一个客户可以修改和存取Application对象的属性。
<2> Session(服务器端,用户时间+一段延迟时间)
Session对象是System.Web.UI.HttpSessionState类的实例。Session对象的所有引用都是在引用当前用户的会话对象,当特定用户不再访问Web站点上的页面时,一些信息将丢失,当新会话启动时,重新有效。Session可以存储针对与某一个用户的IE以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。可以使用Session对象存储特定用户会话所需的信息,这样,当用户在应用程序的Web页面之间跳转时,存储在Session对象中的变量就不会丢失,在整个用户会话中一直存在下去。
当用户请求来自应用程序的Web页时,如果该用户还没有回话,则Web服务器将自动创建一个Session对象;当会话过期或废弃时,服务器将终止该会话。
Session对象用于存储用户的信息。存储于Session对象中的变量为单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。当操作应用程序时,可以打开、改变、关闭(一次会话),这是计算机可以知道你是谁,但存在一个问题:由于Http地址无法保存状态,Web服务器并不知道你是谁以及你做了什么。ASP通过为每个用户创建一个唯一Cookie的方式解决了这个问题,Cookie被传送至客户端,以此识别用户信息。这种接口被成为Session对象。
要立即结束Session可以使用Session.Abandon();
使用Session的最大问题是不知道该在何时结束他。为某个空闲的Session等待太久会耗费服务器的大量资源,而过早结束,则可能导致用户一遍一遍的登录。(Session中切不可存储大量数据)
Session的存储:
Session("usename") = "Donald";
Session("age") = 50;
Session的调用:
Response.Write(Session("username");
Session的移除:
Session.Contents.Remove("sale")
Session.Contents.RemoveAll()
Session的基本设置可以在Web.config中进行,语句写于<system.web>……</system.web>之间,参数配置应写于<sessionState></sessionState>中
Mode:设置存储会话的状态。Off禁用;Inproc工作进程自身存储会话状态;StateServer将会话信息存放在一个单独的ASP.NET状态服务中;SqlServer会话存放在数据库中。
stateConnectionString="":设置ASP.NET应用程序存储远程会话状态的服务器名,默认为本地。
timeout="":设置会话时间,超过期限,会话自动中断,默认为20分钟。
<3>Cookie(客户端,可以根据需要设定)
Cookie常用来对用户进行识别。Cookie是一种服务器留在用户电脑中的小文件。每当同一台电脑通过浏览器请求页面时,这台电脑就会发送Cookie。通过ASP,就可以创建并取回Cookie的值。
创建Cookie:
Response.Cookies("firstname") = "Alex";必须置于<html>标签之前。
取回Cookie:
Request.Cookies("firstname");