• ASP.NET 常用对象


     

    ASP中包含6个无需创建即可直接调用和访问的内置对象,即Request,Response,Session,Application,Server和Cookie。当web应用程序运行时,这些对象可以用来维护有关当前应用程序、HTTP请求、web服务器的活动状态等基本信息,并为用户的HTTP请求和web服务器的处理提供桥梁作用。而在ASP.NET对象中,这些对象仍然存在。不同的是,在.NET框架中,这些内部对象是由封装好的类来定义的,且已成为HttpContext类(封装了特定http请求的所有信息)的属性。由于ASP.NET在初始化页面请求时已经自动创建了这些内部对象,因此可以直接使用它们而无需再对类进行实例化。

    一、Request对象


      Request对象对应ASP.NET中的HttpRequest类,当客户端发出请求执行ASP.NET程序时,CLR会将客户端的请求信息包含在Request对象中,其中包括报头(Head)、客户端浏览器的信息(包括浏览器类型及浏览器版本号)、编码方式、请求方法(包括POST及GET),几所带参数信息(包括参数名及参数值)等。通过使用Request对象,我们可以访问HTML基于表单的数据和通过URL发送的参数列表信息,同时还可以接受来自客户端的Cookie信息。

    Request对象的调用方法如下:

    Request.Collection("Variable")

      Collection是一个属性集合,包括QueySrting,Form,cookies和ServerVariables,表示获取数据的方法。其中,QueryString用于获取HTTP查询字符串集合,Form用于获取窗体的变量集合,Cookies用于获取客户端发送的Cookie集合ServerVariable用于获取web服务器的变量集合。Collection是可以省略的,如果省略,那么Request对象会依照QueryString、Form、Cookies及ServerVariable的顺序查找,直至发现Variable所对应的关键字为止,并返回其值;如果没有发现Variable对应的关键字,则返回空值。

      当Request对象使用Form属性来获取窗体表单的数据时,一般是在窗体页面提交完成之后。窗体页面的提交方式有两种,即POST和GET。当使用POST提交方式时,窗体中的数据会作为Form集合的元素被发送到服务器端;当使用GET提交方式时,窗体中的表单数据将作为查询字符串的形式通过URL传递。此时,要得到其值,可使用Request对象的QueryString属性。

    下面来看两个分别使用POST和GET提交数据的范例:

    例一:用Form的POST方式发送数据
    <html>
      <head>
      <title>使用POST方式发送数据</title>

      </head>
      <body>
       <form id = "form1" method = "post" runat ="server">
         <asp:label id = "label1" runat = "server" text="请提交数据"></asp:label>
         <br />
         <br />
         您的姓名:
         <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
         &nbsp;&nbsp;&nbsp;&nbsp;
         您的年龄:
         <asp:TextBox runat = "server" id = "age" text =""></asp:TextBox>
         &nbsp;&nbsp;&nbsp;&nbsp;
         <asp:button runat = "server" id = "button1"OnClick = "Button_Click" text ="提交"></asp:button>
       </form>
      </body>
    </html>

    <script runat = "server">
      Sub Button_Click(s as object, e as eventargs)
        Dim Str1 as String
        Str1 = "您的姓名是:" & Request.Form("name")& "您的年龄是:" &Request.Form("age")
        label1.text = Str1
      End Sub
    </script>

    例二:用Form的GET方式发送数据
    <html>
      <head>
      <title>使用GET方式发送数据</title>

      </head>
      <body>
        <form id = "form1" method = "post" runat ="server">
          <asp:label id = "label1" runat = "server" text="请提交数据"></asp:label>
          <br />
          <br />
          您的姓名:
          <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
          &nbsp;&nbsp;&nbsp;&nbsp;
          您的年龄:
          <asp:TextBox runat = "server" id = "age" text=""></asp:TextBox>
          &nbsp;&nbsp;&nbsp;&nbsp;
          <asp:button runat = "server" id = "button1"OnClick = "Button_Click" text ="提交"></asp:button>
        </form>
      </body>
    </html>

    <script runat = "server">
      Sub Button_Click(s as object, e as eventargs)
        Dim Str1 as String
        Str1 = "您的姓名是:" & Request.QueryString("name")& "您的年龄是:" &Request.QueryString("age")
        label1.text = Str1
      End Sub
    </script>

      事实上,我们在使用QueryString属性时,也可以通过在请求URL中添加附加信息来传递数据,如:

    /index.aspx?id=1234


      "?"后面的数据便是附加信息。其中"id"表示变量名,"1234"表示该变量的值,获取id变量值的语句是Request.QueryString("id")。如果需要传递多个变量,则可用"&"符号链接,如:


    /index.aspx?id=1234&userid=5678


      使用QueryString和Form属性获取数据的区别在于,前者是一种显示传递,用户可以在地址栏中看到传递的参数及参数值;而后者是一种隐式传递,在传递过程中,用户是无法看到所传递的数据的。因此,使用Form属性来获取数据会更加安全。此外,由于URL得地址长度是有限的,因此使用QueryString属性来接受的数据也是有限的。一般来说,该方式仅能传递256个字节的数据,而通过Form属性来接收的数据最大值可达到2MB。

    Request的ServerVariables属性包含了客户机和服务器的相关环境变量。

    ServerVariables属性的常用环境变量

    HTTP_USER_AGENT    用于获取用户浏览器的类型和版本号
    REMOTE_ADDR      用于获取用户的IP地址
    REQUEST_METHOD    用于获取用户提交数据的方法,如GET和POST
    LOCAL_ADDR      用于获取服务器地址的IP地址
    SERVER_NAME      用于获取服务器的主机名
    PATH_INFO       用于获取但前执行程序的虚拟路径
    PATH_TRANSLATED    用于获取当前执行程序的绝对路径
    CONETNT_LENGTH    用于获取请求程序所发送内容的字符总数
    CONTENT_TYPE     用于获取请求的信息类型
    GATEWAY_INTERFACE   用于获取网管接口
    QUERY_STRING     用于获取URL的附加信息
    SCRIPT_NAME     用于获取当前程序的文件名(包含虚拟路径)
    SERVER_PORT     用于获取服务器接受请求的端口
    SERVER_PROTOCOL   用于获取服务器的协议和版本号
    HTTP_ACCEPT_LANGUAGE用于获取用户所使用的语言

      此外,Request还有一个cookie属性,该属性包含了Cookie对象。

    二、Response对象

      Response对象对应于ASP.NET中的HttpResponse类。当客户发出请求时,CLR会根据用户的请求建立一个Response对象。Response将用于回应客户浏览器。指示浏览器回应内容的包头、服务器端的状态信息,以及输出指定的内容等。

    Response对象的相关属性和方法如下:

    ContentType属性      用于指示Response对象的输出内容类型,默认为text/html
    Buffer属性        表示是否对页面进行缓冲输出,True表示是,False表是否,默认为True,此方法与ASP兼容。
    BufferOutPut属性      表示是否对页面进行缓冲输出,仅适用于ASP.NET
    Clear属性         用于清除缓冲区的所有内容,包括Response显示输出信息及其头信息
    ClearContent属性      用于清除缓冲区的Response显示输出信息
    ClearHeaders属性      用于清除缓冲区的头信息
    Expires属性        用于设置页面在浏览器Cache中失效的时间长度,单位为分钟
    ExpiresAbsolute属性    用于设置页面在浏览器Cache中失效的具体时间
    Flush方法         表示立即将缓冲区的内容向页面输出
    Write方法         用于为当前页面输出指定文本
    End方法          用于立即停止当前程序的处理并返回结果
    BinaryWrite方法      用于将当前指定信息不进行任何字符转换直接写到当前的HTTP输出,此方法主要用来输出非字符的信息
    WriteFile方法       用于将内容写到指定的文件中
    Redirect          用于设置页面重定向

      Response对象的Write方法可以说是我们用的最多的语句,它主要用来在页面上输出文本,如:


    Response.Write("Hello, World!")


      需要注意的是,在ASP中,Response对象的write方法可以直接写输出文本,不需要些括号,如:Response.Write"Hello,World!",而在ASP.NET中,括号是必须要的,这也是ASP开发人员在学习ASP.NET时最容易犯错误的地方。

      此外,我们还可以将Response.Write语句放在脚本内的函数或方法中使用。例如,下面的范例在VB脚本中定义了一个方法,调用Response.Write方法来输出字符串参数。

    例:
    <script language = "vb" runat ="server">
      Sub PrintText(ByVal Str As String)
        response.write("下面是输出的文本:")
        response.write(Str)
      End Sub
    </script>

    <%PrintText(Now.ToString)%>

      在程序设计时,通常需要在不同的页面之间跳转,从而满足不同业务的流程需要,此时,我们可以使用Response.Write方法来实现页面的跳转功能,如

    Response.Redirect("Login.apsx")

      值得注意的是,使用Redirect方法将会消耗大量的服务器CPU时间。因此,如果不是特别需要的话,最好不要不加限制的使用它。

      ASP.NET提供了缓冲机制,允许将数据首先保存在服务器的缓冲区域。这样就不用每次访问时都重新执行文件,而只从缓存中取出即可,从而加快页面处理的速度和服务器的响应时间。Response对象可以通过Buffer和BufferOutPut属性来设置是否缓冲要输出到客户端的数据,如:

    Response.BufferOutPut = "true"

      上面的数据设置了缓冲数据为真,这意味着完成对整个页面的处理之后才向客户端输出。Buffer和BufferOutPut实现的功能是一样的,提供Buffer属性仅仅是为了与ASP兼容,而通常在ASP.NET中使用的是BufferOutPut属性。

      此外,ASP.NET还提供了两个方法,即Clear和Flush来处理有关缓冲的内容,使用这两个方法的前提条件是BufferOutPut属性或Buffer属性已经被设置为True。其中Clear方法用于清除缓冲区中的所有HTML输出,Flush方法用于将当前缓冲区的内容强制输出到客户端。

      与Request对象一样,在Response对象中也包含了一个cookies集合,该集合包含一些cookie对象。该对象是在服务器上创建的,并以Set-Cookie表头的形式传送到客户端。

    三、Server对象

      Server对象对应于ASP.NET中的HttpServerUtility类,它允许方法服务器本身,获取有关服务器的相关信息。

    Server对象的常用属性和方法如下:

    MachineName属性         用于获取服务器的计算机名称
    ScriptTime属性         用于设置或获取请求服务器的超时时间,单位为秒
    CreateObject方法        用于创建COM对象的一个服务器实例
    Execute方法           用于使用另一页面来执行当前请求
    Transfer方法          用于终止当前页的执行,并开始执行当前请求
    HtmlDecode方法         用于对要显示在浏览器中的字符进行解码
    HtmlEncode方法         用于对要显示在浏览器中的字符进行编码
    UrlDecode方法         对字符串进行解码,该字符串为了HTTP传输而编码并在URL中发送到服务器
    UrlEncode方法         用于编码字符串,以便通过URL从web服务器到客户端执行可靠的HTTP传输
    UrlPathEncode方法       对URL字符串的路径执行URL编码,返回该编码字符串
    MapPath方法          返回与web服务区上的虚拟目录对应的物理路径
    ToString方法          以字符串的形式返回对象的信息

      HtmlEncode是Server对象中用得较多的一个方法,它用于对显示在浏览器中的字符串进行编码。首先看下面这条语句:

    Response.Write("<center><b>ASP.NET</b></center>")

      其作用是在浏览器中局中并加粗显示“ASP.NET”。但是如果我们需要将“<center><b>ASP.NET</b></center>”作为一个完整的字符串显示在浏览器中,则通过HtmlEncode方法可以轻松的实现,如:

    Response.Write("Server.HtmlEncode(<center><b>ASP.NET</b></center>)")

      事实上,经过HtmlEncode编码后,字符串已经转换为:

    &lt;center&rt;&lt;b&rt;ASP.NET&lt;/b&rt;&lt;/center&rt;

    HtmlDecode方法的作用与HtmlEncode方法的作用相反,它将HTML编码的代码进行解码,恢复代码的本来面目。


    四、Application对象


      Application对象对应于ASP.NET中的HttpApplicationState类,它主要用来在整个应用程序中共享信息。Application对象可以直接在应用程序状态中存储变量和对象,这些变量和对象在整个应用程序执行的所有ASP.NET页面中都是可用的,其值也相同。例如,我们用的最多的保存页面的访问计数即可通过Application对象实现。

    Application对象的相关属性和方法如下:

    Allkeys属性         获取应用程序状态集合中的对象键
    Contents属性        获取应用程序状态集合的对象引用
    Count属性          获取所含对象的总数
    StaticObjects属性      获取以<boject>标记的且其范围设置为Application的所有对象
    Add方法           添加一个对象到应用程序状态集合中
    Lock方法           锁定应用程序状态对象以保证并发访问
    UnLock方法          取消锁定
    Clear方法          从应用程序状态集合中移除所有对象
    Remove方法         从应用程序状态集合中移除指定对象
    RemoveAll方法        从应用程序状态集合中移除所有对象

    例如,下面的语句在应用程序状态内创建一个新的变量,其名称为“AppVarName”,值为“VarValue”:

    Application("AppvarNAame") = "VarValue"

      在一个ASP.NET页面执行这个语句后,在同一个应用程序的其他页面都可以直接获取AppVarName的值。要读取应用程序状态变量的值,可以使用如下语句:

    Response.Write(Application("AppVarName"))

      它在页面上显示应用程序状态变量的值。
      当然,我们也可以将一个对象保存在应用程序状态变量中。例如,讲一个DataTable对象添加到应用程序状态中,如下所示:

    Application("DataTable") = dtbDataTable

      实际上,应用程序状态变量可以说是ASP.NET应用程序的全局变量,它一直保存到应用程序被关闭或者现实的删除此变量时。因此,在应用程序状态中添加复杂对象时,要考虑到应用程序的内存开销。

    要从应用程序状态中移除特定的变量,可使用Remove方法。例如:

    Application.Remove("AppVarName")

      执行此语句后,应用程序状态中将不再存在AppVarName变量。
      若要移除应用程序状态中所有变量。可使用Clear或者RemoveAll方法。例如:

    Application.Removeall()

    或者

    Application.Clear()

    五、Session对象

      Session对象对应于HttpSessionState类,它主要用于保存与当前用户会话相关的信息。与Application对象不同的是,Session对象与用户相关联。对于同一个用户,在应用程序内不同的页面访问同一个Session变量,其值相同;而不同的用户拥有不同的Session变量,其内容不同。对于每一个Session对象,都有一个SessionID来唯一标识它。

    Session对象的相关属性和方法如下:

    SessionID属性        用于表示会话的标识ID
    Count属性          当前会话状态包含的项数
    Mode属性          获取当前会话的模式
    TimeOut属性         会话状态的过期时间,以分钟为单位
    Abandon属性         取消当前会话
    Clear方法          清除当前会话中的所有值
    RemoveAll方法        清除当前会话中的所有值
    Remove方法         清除当前会话中的指定值

    六、Cookie对象

      Cookie对象对应于HttpCookie类,它主要用来在用户的浏览器上存储小块儿的信息,同时也可用来处理与当前用户会话有关的信息。

    Cookie对象的相关属性和方法如下:

    Name属性              用于获取Cookie的名字
    Value属性              用于设置或获取Cookie的值
    Domain属性             用于设置或获取与Cookie相关的域,默认为接收到该Cookie的主机
    Expires属性             用于设置或获取Cookie的过期时间
    Values属性             用于获取字典Cookie的键值
    HasKeys属性             用于判断是否包含键,即是否为字典Cookie
    Path属性              用于获取或设置与当前Cookie一起传输的虚拟路径,通常保留其默认值
    Secure属性             表示Cookie是否通过保密传输,默认为False

      Cookie对象可以分为两种类型,即会话Cookie(SessionCookie)和持久性Cookie,前者是临时的Cookie,一旦会话状态结束便会自动的消失;后者则具有确定的过期时间。一般来说,持久性Cookie在用户的计算机上都是以文本文件的形似存储的。

      为创建一个Cookie,首先要初始化一个HttpCookie对象实例,然后将其添加到Response的Cookie集合中,例如:

    Dim objCookie As New HttpCookie("TestCookie","会话Cookie")
    Response.Cookikes.Add(objCookie)

      这里添加的是一个会话Cookie,它被添加到浏览器的会话内存中,但不会被写入到用户的硬盘文件中。一旦用户关闭浏览器,该Cookie对象便会消失。

      如果要创建一个持久性Cookie,则只需在创建时为其指定一个过期时间即可。这样它就会以文本文件的形式保存到用户的计算机中,直到到达指定的时间。例如:


    Dim objCookie As New HttpCookie("TestCookie","会话Cookie")
    objCookie.Expires = "#10/1/2012#"
    Response.Cookikes.Add(objCookie)

      如果需要获取一个Cookie值,则可访问Request对象的Cookie集合,例如,以下将遍历并显示当前Request对象中的所有Cookie:

    Dim CookieName As String
    For Each CookieName In Request.Cookies
    Response.Write("Cookie名称:" & CookieName& ",Cookie内容:" &Request.Cookies(CookieName).Value) &"<br />"

      值得注意的是,Cookie只能保存字符串信息,当保存的是整数值时,应先将其转换为字符串。

  • 相关阅读:
    Cake
    抽屉评论数据库设计
    学习网站
    栈和堆简介
    链表相关操作
    链表操作
    Django form验证二
    django ajax提交form表单数据
    jquery中 after append appendTo 的区别
    Python json.dumps 自定义序列化操作
  • 原文地址:https://www.cnblogs.com/shuzhengyi/p/1979907.html
Copyright © 2020-2023  润新知