我们都知道ASP.NET是完全面向对象的编译环境,它提供了实现编译功能的一系列的类库,这些类即包括有界面的控件,也包括无界面的对象,这些对象使用户更容易收集通过浏览器发送的信息、响应浏览器以及存储用户信息。
ASP.NET常用的六大内置对象分别是:
1.Response
2.Request
3.Server
4.Application
5.Session
6.Cookie
一、Response对象
Response对象是HttpResponse类的一个实例。该类主要是封装来自ASP.NET操作的HTTP响应信息。Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL或向浏览器输出Cookie文件。ASP.NET中引用对象方法的语法是“对象名.方法名”。“方法”就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。使用嵌入的方法,对象便知道如何去执行任务,而不用提供额外的指令。
1.Response对象的属性
① BufferOutput
说明:获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送
属性值:如果缓冲了到客户端的输出,则为true;否则为false。默认为true
② Cache
说明:获取Web页的缓存策略(过期时间、保密性、变化子句)
属性值:包含有关当前响应的缓存策略信息的HttpCachePolicy对象
③ Charset
说明:获取或设置输出流的HTTP字符集
属性值:输出流的HTTP字符集
④ IsClientConnected
说明:获取一个值,通过该值指示客户端是否仍连接在服务器上
属性值:如果客户端当前仍在连接,则为true;否则为false
2.Response对象的方法
Response对象可以输出信息到客户端,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。ASP.NET中引用对象方法的语法是“对象名.方法名”。“方法”就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。使用嵌入的方法,对象便知道如何去执行任务,而不用提供额外的指令。
① Write
说明:将指定的字符串或表达式的结果写到当前的HTTP输出
② End
说明:停止页面的执行并得到相应结果
③ Clear
说明:用来在不将缓存中的内容输出的前提下,清空当前页的缓存,仅当使用了缓存输出时,才可以利用Clear方法
④ Flush
说明:将缓存中的内容立即显示出来。该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。和End方法不同的是,该方法调用后,该页面可继续执行
⑤ Redirect
说明:使浏览器立即重定向到程序指定的URL
2.Response对象的方法
① Write
说明:将指定的字符串或表达式的结果写到当前的HTTP输出
② End
说明:停止页面的执行并得到相应结果
③ Clear
说明:用来在不将缓存中的内容输出的前提下,清空当前页的缓存,仅当使用了缓存输出时,才可以利用Clear方法
④ Flush
说明:将缓存中的内容立即显示出来。该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。和End方法不同的是,该方法调用后,该页面可继续执行
⑤ Redirect
说明:使浏览器立即重定向到程序指定的URL
作为一个刚刚入门的.NET学习者,最常用到的可能就是:
1.Response.Write 变量数据或字符串
Response.Write (变量数据或字符串)
例如:Response.Write("<script language=javascript>alert('欢迎学习ASP.NET')</script>")
Response.Write("<script>window.open('WebForm2.aspx')</script>")
2.Response对象的Redirect方法将客户端浏览器重定向到另外的URL上,即跳转到另一个网页。
例如: Response.Redirect("http://www.163.net/")
3. Response.End() 终止当前页的运行
二、Request对象
Request对象主要是让服务器取得客户端浏览器的一些数据,包括从HTML表单用Post或者GET方法传递的参数、Cookie和用户认证。因为Request对象是Page对象的成员之一,所以在程序中不需要做任何的声明即可直接使用; 其类名为 HttpRequest
1.Request对象的属性
① QueryString
说明:获取 HTTP 查询字符串变量集合
属性值:NameValueCollection对象
② Path
说明:获取当前请求的虚拟路径
属性值:当前请求的虚拟路径
③ UserHostAddress
说明:获取远程客户端的 IP 主机地址
属性值:远程客户端的IP地址
④ Browser
说明:获取有关正在请求的客户端的浏览器功能的信息
属性值:HttpBrowserCapabilities对象
2.Request对象的方法
① BinaryRead
说明:执行对当前输入流进行指定字节数的二进制读取
②MapPath
说明:为当前请求将请求的URL中的虚拟路径映射到服务器上的物理路径
常用的有:
1.使用Request.Form属性获取数据
通过该属性,读取<Form></Form>之间的表单数据.注意:提交方式要设置为“Post”。
与Get方法相比较,使用Post方法可以将大量数据发送到服务器端
2.利用Request.QueryString属性获取数据
Request对象的QuerySting属性可以获取 HTTP 查询字符串变量集合 。 通过该属性,我们可以读取地址信息 http://localhost/aaa.aspx?uid=tom&pwd=abc 其中标识为红色部分的数据.
注意:提交方式要设置为“Get”
3.问题:Request.Form用于表单提交方式为Post的情况,而Request.QueryString用于表单提交方式为Get的情况,如果用错,则获取不到数据。
解决方法:利用Request(“元素名”)来简化操作。
4.Request.ServerVariables("环境变量名称")
类似的还有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated
三、Application对象
Application对象是HttpApplicationState类的一个实例。
HttpApplicationState类的单个实例,将在客户端第一次从某个特定的ASP.NET应用程序虚拟目录中请求任何URL资源时创建。对于Web服务器上的每个ASP.NET应用程序,都要创建一个单独的实例。然后通过内部Application对象公开对每个实例的引用。Application对象使给定应用程序的所有用户之间共享信息,并且在服务器运行期间持久地保存数据。因为多个用户可以共享一个Application对象,所以必须要有Lock和Unlock方法,以确保多个用户无法同时改变某一属性。Application对象成员的生命周期止于关闭IIS或使用Clear方法清除。
1.Application对象的属性
① AllKeys
说明:获取HttpApplicationState集合中的访问键
属性值:HttpApplicationState对象名的字符串数组
② Count
说明:获取HttpApplicationState集合中的对象数
属性值:集合中的Item对象数。默认为0
2.Application对象的方法
① Add
说明:新增一个新的Application对象变量
② Clear
说明:清除全部的Application对象变量
③ Get
说明:使用索引关键字或变数名称得到变量值
④ GetKey
说明:使用索引关键字來获取变量名称
⑤ Lock
说明:锁定全部的Application变量
⑥ Remove/RemoveAll
说明:使用变量名称删除一个Application对象/删除全部的Application对象变量
⑦ Set
说明:使用变量名更新一个Application对象变量的內容
⑧ UnLock
说明:解除锁定的Application变量
使用Application对象保存信息
Application(“键名”) = 值
或
Application(“键名”,值)
获取Application对象信息
变量名 = Application(“键名”)
或:变量名 = Application.Item(“键名”)
或:变量名 = Application.Get(“键名”)
更新Application对象的值
Application.Set(“键名”, 值)
删除一个键
Application.Remove(“键名”, 值)
删除所有键
Application.RemoveAll()
或Application.Clear()
2.有可能存在多个用户同时存取同一个Application对象的情况。这样就有可能出现多个用户修改同一个Application命名对象,造成数据不一致的问题。
HttpApplicationState 类提供两种方法 Lock 和 Unlock,以解决对Application对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。
关于锁定与解锁
锁定:Application.Lock()
访问:Application(“键名”) = 值
解锁:Application.Unlock()
注意:Lock方法和UnLock方法应该成对使用。
可用于网站访问人数,聊天室等设备
3. 使用Application事件
在ASP.NET 应用程序中可以包含一个特殊的可选文件——Global.asax 文件,也称作 ASP.NET 应用程序文件,它包含用于响应 ASP.NET或HTTP模块引发的应用程序级别事件的代码。
Global.asax 文件提供了7个事件,其中5个应用于Application对象
事件名称 说明
Application_Start 在应用程序启动时激发
Application_BeginRequest 在每个请求开始时激发
Application_AuthenticateRequest 尝试对使用者进行身份验证时激发
Application_Error 在发生错误时激发
Application_End 在应用程序结束时激发
四、Session对象
Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。
Session的出现填补了HTTP协议的局限。HTTP协议工作过程是,用户发出请求,服务器端做出响应,这种用户端和服务器端之间的联系都是离散的,非连续的。在HTTP协议中没有什么能够允许服务器端来跟踪用户请求的。在服务器端完成响应用户的请求后,服务器端不能持续与该浏览器保持连接。从网站的观点上看,每一个新的请求都是单独存在的,因此,当用户在多个主页间转换时,就根本无法知道他的身份。
使用Session对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将中止该会话。
当用户第一次请求给定的应用程序中的aspx文件时,ASP.NET将生成一个SessionID。SessionID是由一个复杂算法生成的号码,它唯一标识每个用户会话。在新会话开始时,服务器将Session ID作为一个cookie存储在用户的Web浏览器中。
在将SessionID cookie存储于用户的浏览器之后,即使用户请求了另一个.aspx文件,或请求了运行在另一个应用程序中的.aspx文件,ASP.NET仍会重用该cookie跟踪会话。与此相似,如果用户故意放弃会话或让会话超时,然后再请求另一个.aspx文件,那么ASP.NET将以同一个cookie开始新的会话。只有当服务器管理员重新启动服务器,或用户重新启动Web浏览器时,此时存储在内存中的SessionID设置才被清除,用户将会获得新的SessionID cookie。
通过重用SessionID cookie,Web应用程序将发送给用户浏览器的cookie数量降为最低。另外,如果用户决定该Web应用程序不需要会话管理,就可以不让Web应用程序跟踪会话和向用户发送SessionID。
Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,另外其还经常被用在鉴别客户身份的程序中。要注意的是,会话状态仅在支持cookie的浏览器中保留,如果客户关闭了cookies选项,Session也就不能发挥作用了。
ASP.NET的Sessions非常好用,能够利用Session对象来对Session全面控制,如果需要在一个用户的Session中存储信息,只需要简单地直接调用Session对象就可以了,下面就是个例子:
Session["Myname"]=Response.form("Username");
Session["Mycompany"]=Response.form("Usercompany");
应注意的是,Session对象是与特定用户相联系的。针对某一个用户赋值的Session对象是和其他用户的Session对象完全独立的,不会相互影响。换句话说,这里面针对每一个用户保存的信息是每一个用户自己独享的,不会产生共享情况。
很明显,对于不同的用户,Session对象的Myname变量和Mycompany变量各自是不同的,当每个人在网站的不同主页间浏览时,这种针对个人的变量会一直保留,这样作为身份认证是十分有效的。
1.Session对象的属性
① Count
说明:获取会话状态集合中Session对象的个数
属性值:Session对象的个数
② TimeOut
说明:获取或设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限
属性值:超时期限(以分钟为单位)
③ SessionID
说明:获取用于标识会话的唯一会话ID
属性值:会话ID
2.Session对象的方法
① Add
说明:新增一个Session对象
② Clear
说明:清除会话状态中的所有值
③ Remove
说明:删除会话状态集合中的项
④ RemoveAll
说明:清除所有会话状态值
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
语法格式为:
Session ("键名") = 值
或者
Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
语法格式为:
变量 = Session ("键名")
或者
变量 = Session.Item("键名")
(3)删除会话状态集合中的项
语法格式为:
Session.Remove("键名")
(4)清除会话状态中的所有值
语法格式为:
Session.RemoveAll()
或者
Session.Clear()
(5)取消当前会话
语法格式为:
Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
语法格式为:
Session.TimeOut = 数值
Global.asax 文件中有2个事件应用于Session对象
事件名称 说明
Session_Start 在会话启动时激发
Session_End 在会话结束时激发
作为刚入门的朋友来说,可能会在做注册与登录的时候用到这一内置对象,用于绑定用户名和密码。
三、Server对象
Server对象是HttpServerUtility的一个实例。该对象提供对服务器上的方法和属性的访问。
1.Server对象的属性
① MachineName
说明:获取服务器的计算机名称
属性值:本地计算机的名称
② ScriptTimeout
说明:获取和设置请求超时
属性值:请求的超时设置(以秒计)
2.Server对象的方法
① CreateObject
说明:创建COM 对象的一个服务器实例
② CreateObjectFromClsid
说明:创建COM 对象的服务器实例,该对象由对象的类标识符(CLSID)标识
③ Execute
说明:使用另一页执行当前请求
④ Transfer
说明:终止当前页的执行,并为当前请求开始执行新页
⑤ HtmlDecode
说明:对已被编码以消除无效HTML字符的字符串进行解码
⑥ HtmlEncode
说明:对要在浏览器中显示的字符串进行编码
⑦ MapPath
说明:返回与Web服务器上的指定虚拟路径相对应的物理文件路径
⑧ UrlDecode
说明:对字符串进行解码,该字符串为了进行HTTP传输而进行编码并在URL中发送到服务器
⑨ UrlEncode
说明:编码字符串,以便通过URL从Web服务器到客户端进行可靠的HTTP传输
Server对象提供对服务器上的方法和属性进行的访问 .其类名称是HttpServerUtility.
Server对象的主要属性有:
MachineName:获取服务器的计算机名称。
ScriptTimeout:获取和设置请求超时(以秒计)。
方法名称 说明
CreateObject 创建 COM 对象的一个服务器实例。
Execute 执行当前服务器上的另一个aspx页,执行完该页后再返回本页继续执行
HtmlEncode 对要在浏览器中显示的字符串进行HTML编码并返回已编码的字符串。
HtmlDecode 对HTML编码的字符串进行解码,并返回已解码的字符串。
MapPath 返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。
Transfer 终止当前页的执行,并为当前请求开始执行新页。
UrlEncode 将代表URL的字符串进行编码,以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。
UrlDecode 对已被编码的URL字符串进行解码,并返回已解码的字符串。
UrlPathEncode 对 URL 字符串的路径部分进行 URL 编码,并返回已编码的字符串。
编码:
Server.HtmlEncode(“HTML代码”)
解码:
Server.HtmlDecode(“已编码的HTML”)
1.Server对象的MapPath方法将虚拟路径或相对于当前页的相对路径转化为Web 服务器上的物理文件路径。
语法:Server.MapPath(“虚拟路径”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
六、Cookie对象
Cookie 是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
Cookie跟Session、Application类似,也是用来保存相关信息,但Cookie和其他对象的最大不同是,Cookie将信息保存在客户端,而Session和Application是保存在服务器端。也就是说,无论何时用户连接到服务器,Web站点都可以访问cookie信息。这样,既方便用户的使用,也方便了网站对用户的管理。
ASP.NET包含两个内部Cookie集合。通过HttpRequest的Cookies集合访问的集合包含通过Cookie标头从客户端传送到服务器的Cookie。通过HttpResponse的Cookies集合访问的集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
1.Cookie对象的属性
① Name
说明:获取或设置Cookie的名称
属性值:Cookie的名称
② Value
说明:获取或设置Cookie的Value
属性值:Cookie的Value
③ Expires
说明:获取或设置Cookie的过期日期和时间
属性值:作为DateTime实例的Cookie过期日期和时间
④ Version
说明:获取或设置此Cookie符合的HTTP状态维护版本
属性值:此Cookie符合的HTTP状态维护版本
2.Cookie对象的方法
① Add
说明:新增一个Cookie变量
② Clear
说明:清除Cookie集合内的变量
③ Get
说明:通过变量名或索引得到Cookie的变量值
④ GetKey
说明:以索引值来获取Cookie的变量名称
⑤ Remove
说明:通过Cookie变量名来删除Cookie变量
Cookie就是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以‘键/值’对的形式存储。
Cookie是保存在客户机硬盘上的一个文本文件,可以存储有关特定客户端、会话或应用程序的信息,在.NET中对应HttpCookie类。
有两种类型的Cookie:会话Cookie(Session Cookie)和持久性Cookie。前者是临时性的,一旦会话状态结束它将不复存在;后者则具有确定的过期日期,在过期之前Cookie在用户的计算机上以文本文件的形式存储。
在服务器上创建并向客户端输出Cookie可以利用Response对象实现。
Response对象支持一个名为Cookies的集合,可以将Cookie对象添加到该集合中,从而向客户端输出Cookie。
通过Request对象的Cookies集合来访问Cookie