1、第四章第四章ASP.NETASP.NET的常用内置对象的常用内置对象输出字符串到网页上输出字符串到网页上 重定向重定向缓存缓存HTML HTML 输出文本文件的内容输出文本文件的内容 Response对象对象 Response对象是对象是ASP.NET用于控制如何将响用于控制如何将响应发送给用户的内置对象。它提供了丰富的应发送给用户的内置对象。它提供了丰富的方法和属性用于控制响应的输出方式。方法和属性用于控制响应的输出方式。输出字符串到网页上输出字符串到网页上 将一个字符串输出到网页上是将一个字符串输出到网页上是Response对象对象的一个最常用的功能,使用它的的一个最常用的功能,使用它的W
2、rite方法就方法就可以实现。可以实现。例子例子重定向重定向 在网站的设计过程中,通常会遇到需要把用在网站的设计过程中,通常会遇到需要把用户带到一个新页面中。这时可以使用户带到一个新页面中。这时可以使用Response的的Redirect方法。在这种方法中要给方法。在这种方法中要给出需要重定向的页面的相对路径或出需要重定向的页面的相对路径或URL。例子例子缓存缓存HTML Response对象有一个属性是对象有一个属性是Buffer,这个属性的值用这个属性的值用来确定数据发送给客户之前是否要缓冲。来确定数据发送给客户之前是否要缓冲。它的默认值是它的默认值是True,表示确定数据发送给客户之前表
3、示确定数据发送给客户之前需要缓冲,也就是说把需要发送给客户的信息先放需要缓冲,也就是说把需要发送给客户的信息先放置到一个预先设定的缓冲区中,然后再一次性地发置到一个预先设定的缓冲区中,然后再一次性地发送给客户;送给客户;如果把这个值设置为如果把这个值设置为False,那么所有的信息都会在那么所有的信息都会在产生的时候立即发送给客户。从速度上说,这种不产生的时候立即发送给客户。从速度上说,这种不使用缓冲的方法会比使用缓冲的方法要慢得多。使用缓冲的方法会比使用缓冲的方法要慢得多。例子例子输出文本文件的内容输出文本文件的内容 Response对象的对象的WriteFile方法可以实现将文方法可以实现
4、将文本文件的内容值接像屏幕输出。本文件的内容值接像屏幕输出。这种方法与这种方法与Wirte方法一样都可以向客户输出方法一样都可以向客户输出数据,惟一的不同在于数据,惟一的不同在于Write方法是输出它所方法是输出它所带参数中保存的字符串,而带参数中保存的字符串,而WriteFile方法所方法所带的参数则是代表一个文本文件的名字,可带的参数则是代表一个文本文件的名字,可以把这个文件中的文本当作数据输出给客户。以把这个文件中的文本当作数据输出给客户。例子例子get方法方法 post方法方法 使用环境变量使用环境变量 Request对象对象 Request对象是对象是ASP.NET中用于提取浏览器中
5、中用于提取浏览器中用户输入信息的内置对象。在使用这个内部用户输入信息的内置对象。在使用这个内部对象时,用户的信息可以通过表单来提交,对象时,用户的信息可以通过表单来提交,也可以通过直接用也可以通过直接用URL的参数来获取,还可的参数来获取,还可以通过环境变量来提供。以通过环境变量来提供。get方法方法 使用使用get方法进行数据提交是把用户要提交的方法进行数据提交是把用户要提交的信息作为查询字符串加在信息作为查询字符串加在URL的后面传给接的后面传给接收程序。收程序。URL是指是指Uniform Resource Locators(统一资源定位器统一资源定位器),它的通常形式是,它的通常形式是
6、类似类似http: 使用使用post方法可以用方法可以用Request对象的对象的Form集合属性来集合属性来得到用户提交的数据。这时,用户浏览器的地址栏得到用户提交的数据。这时,用户浏览器的地址栏中不会显示相关的查询字符串。因此如果需要提交中不会显示相关的查询字符串。因此如果需要提交的数据很多时,应该使用的数据很多时,应该使用post方法,因为它对数据的方法,因为它对数据的大小和长度没有什么限制。大小和长度没有什么限制。如果使用如果使用Web表单而不是表单而不是HTML表单的话,那么也表单的话,那么也只能够使用只能够使用post方法来获取数据,因为这是方法来获取数据,因为这是Web表单表单默
7、认使用的方法,无需在定义表单的时候说明。默认使用的方法,无需在定义表单的时候说明。例子例子环境变量环境变量 每次从客户的浏览器向服务器发送请求时,每次从客户的浏览器向服务器发送请求时,程序都可以搜集很多关于用户的信息。比如程序都可以搜集很多关于用户的信息。比如主机名、主机名、IP地址、浏览器类型和操作系统等。地址、浏览器类型和操作系统等。这些信息被称为服务器环境变量,可以通过这些信息被称为服务器环境变量,可以通过Request对象的对象的ServerVariables集合来进行使集合来进行使用用 ALL_HTTP 在没有解析成为其他环境变量值前的所有在没有解析成为其他环境变量值前的所有HTTP
8、 例子例子PATH_INFO PATH_INFO可以获得一个程序所在文件的可以获得一个程序所在文件的URL的值,使用这个变量通常可以使程序更的值,使用这个变量通常可以使程序更加灵活。加灵活。例子例子REMOTE_ADDR 通过通过REMOTE_ADDR可以得到客户或代理服可以得到客户或代理服务器的务器的IP地址地址 例子例子获取用户的浏览器的信息获取用户的浏览器的信息 要获取用户的浏览器的信息,最简单的方法要获取用户的浏览器的信息,最简单的方法就是使用就是使用Request对象的对象的Browser属性。属性。这个属性本身也是一个对象,它的常用属性这个属性本身也是一个对象,它的常用属性有两个:
9、有两个:(1)Browser:表示浏览器的名称表示浏览器的名称(2)MajorVersion:表示浏览器的版本的整数位表示浏览器的版本的整数位(3)Version:表示浏览器的完整版本号表示浏览器的完整版本号例子例子如何使用如何使用Application对象对象 Contents集合和集合和StaticObjects集合集合 Lock和和UnLock方法的使用方法的使用 Application事件事件 Application对象对象 在在ASP.NET中,中,Application是是ASP.NET的一的一个特殊的内置对象,它代表一个目录以及它个特殊的内置对象,它代表一个目录以及它所有子目录中
10、的所有所有子目录中的所有ASP.NET文件,方便了文件,方便了文件之间的数据共享。文件之间的数据共享。由于它是一个内置对象,所以使用它的时候由于它是一个内置对象,所以使用它的时候与使用与使用Response对象和对象和Request对象类似,不对象类似,不需要进行任何对象的实例化,就可以直接使需要进行任何对象的实例化,就可以直接使用。用。如何使用如何使用Application对象对象 从从Web站点的主目录开始,每个目录和子目录站点的主目录开始,每个目录和子目录都可以作为一个都可以作为一个Application。只要在一个目录只要在一个目录中没有找到其他的中没有找到其他的Application
11、,那么这个目录那么这个目录中的每一个文件和子目录都是这个中的每一个文件和子目录都是这个Application的一部分。的一部分。配置配置ApplicationApplication使用使用IISIIS配置配置ApplicationApplication例子例子Contents集合集合Application对象的对象的Contents属性是一个集合,属性是一个集合,它 包 含 了 这 个 对 象 中 所 有 的 不 是 用它 包 含 了 这 个 对 象 中 所 有 的 不 是 用定义的非对象项目信息。定义的非对象项目信息。使用使用Contents集合可以得到这个项目的值,方集合可以得到这个项目的
12、值,方法如下:法如下:Response.Write(Application.Contentsgreeting);例子例子StaticObjects集合 那些用那些用定义的对象定义的对象可以用可以用StaticObjectsStaticObjects集合来访问集合来访问Lock和和UnLock方法的使用方法的使用 由于由于Web程序是一个多用户的程序,那么对于一些程序是一个多用户的程序,那么对于一些存在计算功能的程序就可能因为存在多个用户而产存在计算功能的程序就可能因为存在多个用户而产生计算错误问题。生计算错误问题。Application恰恰又是一个存储着共享信息的对象,恰恰又是一个存储着共享信
13、息的对象,当有多个用户同时希望改变当有多个用户同时希望改变Application对象中某个对象中某个项目的内容的时候,就有可能出现数据不一致的问项目的内容的时候,就有可能出现数据不一致的问题。题。为了防止这个问题的发生,为了防止这个问题的发生,Application对象提供了对象提供了两种方法:两种方法:Lock和和UnLock。当希望修改某个项目的内容时,先用当希望修改某个项目的内容时,先用Lock方法将方法将Application对象锁住,限制其他的用户修改对象锁住,限制其他的用户修改Application中中的项目的值,然后再对项目的值进行修改。的项目的值,然后再对项目的值进行修改。修改
14、完成后,使用修改完成后,使用UnLock方法把锁打开。方法把锁打开。例子例子Application事件事件 Application有两个事件:有两个事件:OnStart和和OnEnd。OnStart是当第一个客户请求是当第一个客户请求ASP.NET文件的时候,文件的时候,由由ASP.NET调用执行;调用执行;OnEnd事件则是在服务器关闭的时候,由事件则是在服务器关闭的时候,由ASP.NET调用执行,通常是把所有需要永久保存调用执行,通常是把所有需要永久保存的信息写入到磁盘中,以便在服务器重新启动并的信息写入到磁盘中,以便在服务器重新启动并被访问的时候重新加载。被访问的时候重新加载。将在第将在
15、第9章讲解这两个事件的使用方法。章讲解这两个事件的使用方法。Session对象的属性对象的属性 Session对象的方法对象的方法 Session对象的事件对象的事件 使用使用Session对象的注意事项对象的注意事项 Session对象对象 ASP.NET提供了内置对象提供了内置对象Session负责存储、负责存储、读取和改变一个特定用户的会话信息。读取和改变一个特定用户的会话信息。早期版本早期版本ASPASP的的SessionSession对象是依赖对象是依赖CookieCookie进行个进行个人身份的甄别的。人身份的甄别的。而在而在ASP.NETASP.NET中,则可以选择把中,则可以选
16、择把SessionIDSessionID存储在存储在每一个链接的每一个链接的URLURL中。这样,如果用户的浏览器不中。这样,如果用户的浏览器不支持支持CookieCookie,那么也可以使用那么也可以使用SessionSession。当然,当然,ASP.NETASP.NET仍然保留了使用仍然保留了使用CookieCookie来保存来保存SessionIDSessionID的方法。的方法。例子例子Session对象的属性对象的属性 Session对象的常用属性有:对象的常用属性有:SessionID、TimeOut、LCID、Contents集合和集合和StaticObjects集合。集合。S
17、essionID表示表示一个会话的存在,可以区分不同的一个会话的存在,可以区分不同的SessionSession。TimeOut属性表示在一个会话结束之前会等待用户没有任属性表示在一个会话结束之前会等待用户没有任何活动的最大时间,单位是分钟。何活动的最大时间,单位是分钟。LCID是表示不同的地区的一个内部标识。是表示不同的地区的一个内部标识。ContentsContents集合和集合和StaticObjectsStaticObjects集合的使用与集合的使用与ApplicationApplication对象的对象的ContentsContents集合和集合和StaticObjectsStati
18、cObjects集合的使用方法一集合的使用方法一样样 Session对象的方法对象的方法 Session对象只有一个方法:对象只有一个方法:Abandon,调用调用这种方法可以立即销毁这种方法可以立即销毁Session对象并立即释对象并立即释放放Session对象占用的资源。对象占用的资源。当当Session对象所记录的内容不再有用的时候,对象所记录的内容不再有用的时候,就可以使用这种方法将就可以使用这种方法将Session对象销毁。对象销毁。Session对象的事件对象的事件 OnStart事件在客户第一次从应用程序中请求事件在客户第一次从应用程序中请求ASP.NET页的时候由页的时候由AS
19、P.NET调用,调用,OnEnd事件在会话关闭的时候调用。当会话超时或事件在会话关闭的时候调用。当会话超时或调用调用Session的的Abandon方法的时候也会发生方法的时候也会发生这个事件。这个事件。在第在第9 9章中讲解章中讲解Server对象的属性对象的属性 Server对象的方法对象的方法 Server对象对象 ServerServer对象的属性反映了对象的属性反映了Web服务器的各种信服务器的各种信息,它提供了服务器可以提供的各种服务。息,它提供了服务器可以提供的各种服务。这个对象与这个对象与Application对象和对象和Session对象不对象不同,它不负责为用户存储什么信息
20、,也没有同,它不负责为用户存储什么信息,也没有什么事件什么事件 Server对象的属性对象的属性 Server对象的对象的MachineName属性用于存储主属性用于存储主机机器名。机机器名。Server对象的另一个属性是对象的另一个属性是ScriptTimeout属属性,这个属性说明了在页面超时之前可以运性,这个属性说明了在页面超时之前可以运行多长时间。这个值的单位是以秒为单位的,行多长时间。这个值的单位是以秒为单位的,默认值是默认值是90秒。程序员可以通过设置这个值秒。程序员可以通过设置这个值来改变默认值。来改变默认值。Server对象的方法对象的方法 CreateObject方法用于在方
21、法用于在ASP.NET中创建所有的对象。中创建所有的对象。Execute方法用于把控制传递给其他的子例程或存储过程方法用于把控制传递给其他的子例程或存储过程GetLastErrorGetLastError方法的作用是检索最近一次发生的方法的作用是检索最近一次发生的ASP.NETASP.NET错误。错误。HTMLEncodeHTMLEncode方法是一种重要的在网页上显示文本的方法。方法是一种重要的在网页上显示文本的方法。MapPathMapPath方法可以把一个实际的文件转化成为它的目录路径。方法可以把一个实际的文件转化成为它的目录路径。TransferTransfer方法也是可以把控制传递出
22、去方法也是可以把控制传递出去 URLEncodeURLEncode方法与方法与HTMLEncodeHTMLEncode方法类似,只不过它可以把方法类似,只不过它可以把URLURL中的所有特殊字符转化成为非功能的等价内容。中的所有特殊字符转化成为非功能的等价内容。什么是什么是Cookie设置设置CookieCookie检索检索Cookie 检测用户是否使用了检测用户是否使用了Cookie 什么是什么是Cookie 在在Web程序设计中,它表示一个长度不超过程序设计中,它表示一个长度不超过4K的一个普通的文本文件。这个文件在用户的一个普通的文本文件。这个文件在用户的硬盘上,可以由的硬盘上,可以由W
23、eb浏览器进行访问。浏览器进行访问。CookieCookie基础知识基础知识 Cookie有两种形式:会话有两种形式:会话Cookie和永久和永久Cookie。会话会话Cookie就是在前一节中讲解就是在前一节中讲解Session对象时提对象时提到的用于保存用户到的用于保存用户SessionID的的Cookie。这个这个Cookie是临时性的,保存在用户的内存中而不是是临时性的,保存在用户的内存中而不是硬盘上,只在浏览器打开的时候才存在,一旦会硬盘上,只在浏览器打开的时候才存在,一旦会话结束或会话超时,这个话结束或会话超时,这个Cookie就被删除。就被删除。永久永久Cookie则是永久性地存
24、储在客户的硬盘上,则是永久性地存储在客户的硬盘上,并且在指定的过期日期之前一直可以使用。并且在指定的过期日期之前一直可以使用。Session和和Cookie的比较的比较 根据要存储数据的重要性进行选择。根据要存储数据的重要性进行选择。根据要存储的数据量的大小进行选择根据要存储的数据量的大小进行选择 设置设置Cookie 在在ASP.NET中采用的是面向对象的方法来创中采用的是面向对象的方法来创建建Cookie,所有的所有的Cookie都是由都是由HttpCookie类类创建的。当在创建的。当在HttpCookie类上创建了一个实例,类上创建了一个实例,那么就创建了一个那么就创建了一个Cooki
25、e。把需要在把需要在Cookie中中保存的信息准备好之后,再用保存的信息准备好之后,再用Response对象对象的的AppendCookie方法把这个方法把这个Cookie写到客户写到客户端的硬盘上。端的硬盘上。例子例子创建永久性创建永久性Cookie 为了能够长期地保存为了能够长期地保存Cookie信息,需要设置信息,需要设置Cookie的过期日期,这样才能让的过期日期,这样才能让Cookie成为永成为永久性久性Cookie。例子例子使用使用Cookie字典字典 一个一个Cookie中可以保存多个信息,这就是中可以保存多个信息,这就是Cookie字典。字典。例子例子检索检索Cookie 读读Cookie的内容(即检索的内容(即检索Cookie)则要用则要用Request对象对象 例子例子检测用户是否使用了检测用户是否使用了Cookie 检测用户是否使用了检测用户是否使用了Cookie 使用通用方法进行检查使用通用方法进行检查 为了能够检查到是否启用了为了能够检查到是否启用了Cookie,最直接的方最直接的方法就是在客户端保存一个法就是在客户端保存一个Cookie,然后立即访问然后立即访问这个这个Cookie。