乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      ASP.NET的常用組件對象 - 博客文庫 - 博客園

       orion360doc 2011-03-22

      ASP.NET的常用組件對象

      作者:web程序人生  來源:博客園  發(fā)布時間:2011-01-29 23:25  閱讀:8 次  原文鏈接   [收藏]  

        在ASP中包含6個無需創(chuàng)建即可直接調(diào)用和訪問的內(nèi)置對象,即Request,Response,Session,Application,Server和Cookie。當web應用程序運行時,這些對象可以用來維護有關(guān)當前應用程序、HTTP請求、web服務器的活動狀態(tài)等基本信息,并為用戶的HTTP請求和web服務器的處理提供橋梁作用。而在ASP.NET對象中,這些對象仍然存在。不同的是,在.NET框架中,這些內(nèi)部對象是由封裝好的類來定義的,且已成為HttpContext類(封裝了特定http請求的所有信息)的屬性。由于ASP.NET在初始化頁面請求時已經(jīng)自動創(chuàng)建了這些內(nèi)部對象,因此可以直接使用它們而無需再對類進行實例化。

      一、Request對象


        Request對象對應ASP.NET中的HttpRequest類,當客戶端發(fā)出請求執(zhí)行ASP.NET程序時,CLR會將客戶端的請求信息包含在Request對象中,其中包括報頭(Head)、客戶端瀏覽器的信息(包括瀏覽器類型及瀏覽器版本號)、編碼方式、請求方法(包括POST及GET),幾所帶參數(shù)信息(包括參數(shù)名及參數(shù)值)等。通過使用Request對象,我們可以訪問HTML基于表單的數(shù)據(jù)和通過URL發(fā)送的參數(shù)列表信息,同時還可以接受來自客戶端的Cookie信息。

      Request對象的調(diào)用方法如下:

      Request.Collection("Variable")

        Collection是一個屬性集合,包括QueySrting,F(xiàn)orm,cookies和ServerVariables,表示獲取數(shù)據(jù)的方法。其中,QueryString用于獲取HTTP查詢字符串集合,F(xiàn)orm用于獲取窗體的變量集合,Cookies用于獲取客戶端發(fā)送的Cookie集合ServerVariable用于獲取web服務器的變量集合。Collection是可以省略的,如果省略,那么Request對象會依照QueryString、Form、Cookies及ServerVariable的順序查找,直至發(fā)現(xiàn)Variable所對應的關(guān)鍵字為止,并返回其值;如果沒有發(fā)現(xiàn)Variable對應的關(guān)鍵字,則返回空值。

        當Request對象使用Form屬性來獲取窗體表單的數(shù)據(jù)時,一般是在窗體頁面提交完成之后。窗體頁面的提交方式有兩種,即POST和GET。當使用POST提交方式時,窗體中的數(shù)據(jù)會作為Form集合的元素被發(fā)送到服務器端;當使用GET提交方式時,窗體中的表單數(shù)據(jù)將作為查詢字符串的形式通過URL傳遞。此時,要得到其值,可使用Request對象的QueryString屬性。

      下面來看兩個分別使用POST和GET提交數(shù)據(jù)的范例:

      例一:用Form的POST方式發(fā)送數(shù)據(jù)
      <html>
        <head>
        <title>使用POST方式發(fā)送數(shù)據(jù)</title>

        </head>
        <body>
         <form id = "form1" method = "post" runat ="server">
           <asp:label id = "label1" runat = "server" text="請?zhí)峤粩?shù)據(jù)"></asp:label>
           <br />
           <br />
           您的姓名:
           <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
               
           您的年齡:
           <asp:TextBox runat = "server" id = "age" text =""></asp:TextBox>
               
           <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方式發(fā)送數(shù)據(jù)
      <html>
        <head>
        <title>使用GET方式發(fā)送數(shù)據(jù)</title>

        </head>
        <body>
          <form id = "form1" method = "post" runat ="server">
            <asp:label id = "label1" runat = "server" text="請?zhí)峤粩?shù)據(jù)"></asp:label>
            <br />
            <br />
            您的姓名:
            <asp:TextBox runat = "server" id = "name" text=""></asp:TextBox>
                
            您的年齡:
            <asp:TextBox runat = "server" id = "age" text=""></asp:TextBox>
                
            <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中添加附加信息來傳遞數(shù)據(jù),如:

      /index.aspx?id=1234


        "?"后面的數(shù)據(jù)便是附加信息。其中"id"表示變量名,"1234"表示該變量的值,獲取id變量值的語句是Request.QueryString("id")。如果需要傳遞多個變量,則可用"&"符號鏈接,如:


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


        使用QueryString和Form屬性獲取數(shù)據(jù)的區(qū)別在于,前者是一種顯示傳遞,用戶可以在地址欄中看到傳遞的參數(shù)及參數(shù)值;而后者是一種隱式傳遞,在傳遞過程中,用戶是無法看到所傳遞的數(shù)據(jù)的。因此,使用Form屬性來獲取數(shù)據(jù)會更加安全。此外,由于URL得地址長度是有限的,因此使用QueryString屬性來接受的數(shù)據(jù)也是有限的。一般來說,該方式僅能傳遞256個字節(jié)的數(shù)據(jù),而通過Form屬性來接收的數(shù)據(jù)最大值可達到2MB。

      Request的ServerVariables屬性包含了客戶機和服務器的相關(guān)環(huán)境變量。

      ServerVariables屬性的常用環(huán)境變量

      HTTP_USER_AGENT    用于獲取用戶瀏覽器的類型和版本號
      REMOTE_ADDR      用于獲取用戶的IP地址
      REQUEST_METHOD    用于獲取用戶提交數(shù)據(jù)的方法,如GET和POST
      LOCAL_ADDR      用于獲取服務器地址的IP地址
      SERVER_NAME      用于獲取服務器的主機名
      PATH_INFO       用于獲取但前執(zhí)行程序的虛擬路徑
      PATH_TRANSLATED    用于獲取當前執(zhí)行程序的絕對路徑
      CONETNT_LENGTH    用于獲取請求程序所發(fā)送內(nèi)容的字符總數(shù)
      CONTENT_TYPE     用于獲取請求的信息類型
      GATEWAY_INTERFACE   用于獲取網(wǎng)管接口
      QUERY_STRING     用于獲取URL的附加信息
      SCRIPT_NAME     用于獲取當前程序的文件名(包含虛擬路徑)
      SERVER_PORT     用于獲取服務器接受請求的端口
      SERVER_PROTOCOL   用于獲取服務器的協(xié)議和版本號
      HTTP_ACCEPT_LANGUAGE用于獲取用戶所使用的語言

        此外,Request還有一個cookie屬性,該屬性包含了Cookie對象。

      二、Response對象

        Response對象對應于ASP.NET中的HttpResponse類。當客戶發(fā)出請求時,CLR會根據(jù)用戶的請求建立一個Response對象。Response將用于回應客戶瀏覽器。指示瀏覽器回應內(nèi)容的包頭、服務器端的狀態(tài)信息,以及輸出指定的內(nèi)容等。

      Response對象的相關(guān)屬性和方法如下:

      ContentType屬性      用于指示Response對象的輸出內(nèi)容類型,默認為text/html
      Buffer屬性        表示是否對頁面進行緩沖輸出,True表示是,F(xiàn)alse表是否,默認為True,此方法與ASP兼容。
      BufferOutPut屬性      表示是否對頁面進行緩沖輸出,僅適用于ASP.NET
      Clear屬性         用于清除緩沖區(qū)的所有內(nèi)容,包括Response顯示輸出信息及其頭信息
      ClearContent屬性      用于清除緩沖區(qū)的Response顯示輸出信息
      ClearHeaders屬性      用于清除緩沖區(qū)的頭信息
      Expires屬性        用于設置頁面在瀏覽器Cache中失效的時間長度,單位為分鐘
      ExpiresAbsolute屬性    用于設置頁面在瀏覽器Cache中失效的具體時間
      Flush方法         表示立即將緩沖區(qū)的內(nèi)容向頁面輸出
      Write方法         用于為當前頁面輸出指定文本
      End方法          用于立即停止當前程序的處理并返回結(jié)果
      BinaryWrite方法      用于將當前指定信息不進行任何字符轉(zhuǎn)換直接寫到當前的HTTP輸出,此方法主要用來輸出非字符的信息
      WriteFile方法       用于將內(nèi)容寫到指定的文件中
      Redirect          用于設置頁面重定向

        Response對象的Write方法可以說是我們用的最多的語句,它主要用來在頁面上輸出文本,如:


      Response.Write("Hello, World!")


        需要注意的是,在ASP中,Response對象的write方法可以直接寫輸出文本,不需要些括號,如:Response.Write"Hello,World!",而在ASP.NET中,括號是必須要的,這也是ASP開發(fā)人員在學習ASP.NET時最容易犯錯誤的地方。

        此外,我們還可以將Response.Write語句放在腳本內(nèi)的函數(shù)或方法中使用。例如,下面的范例在VB腳本中定義了一個方法,調(diào)用Response.Write方法來輸出字符串參數(shù)。

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

      <%PrintText(Now.ToString)%>

        在程序設計時,通常需要在不同的頁面之間跳轉(zhuǎn),從而滿足不同業(yè)務的流程需要,此時,我們可以使用Response.Write方法來實現(xiàn)頁面的跳轉(zhuǎn)功能,如

      Response.Redirect("Login.apsx")

        值得注意的是,使用Redirect方法將會消耗大量的服務器CPU時間。因此,如果不是特別需要的話,最好不要不加限制的使用它。

        ASP.NET提供了緩沖機制,允許將數(shù)據(jù)首先保存在服務器的緩沖區(qū)域。這樣就不用每次訪問時都重新執(zhí)行文件,而只從緩存中取出即可,從而加快頁面處理的速度和服務器的響應時間。Response對象可以通過Buffer和BufferOutPut屬性來設置是否緩沖要輸出到客戶端的數(shù)據(jù),如:

      Response.BufferOutPut = "true"

        上面的數(shù)據(jù)設置了緩沖數(shù)據(jù)為真,這意味著完成對整個頁面的處理之后才向客戶端輸出。Buffer和BufferOutPut實現(xiàn)的功能是一樣的,提供Buffer屬性僅僅是為了與ASP兼容,而通常在ASP.NET中使用的是BufferOutPut屬性。

        此外,ASP.NET還提供了兩個方法,即Clear和Flush來處理有關(guān)緩沖的內(nèi)容,使用這兩個方法的前提條件是BufferOutPut屬性或Buffer屬性已經(jīng)被設置為True。其中Clear方法用于清除緩沖區(qū)中的所有HTML輸出,F(xiàn)lush方法用于將當前緩沖區(qū)的內(nèi)容強制輸出到客戶端。

        與Request對象一樣,在Response對象中也包含了一個cookies集合,該集合包含一些cookie對象。該對象是在服務器上創(chuàng)建的,并以Set-Cookie表頭的形式傳送到客戶端。

      三、Server對象

        Server對象對應于ASP.NET中的HttpServerUtility類,它允許方法服務器本身,獲取有關(guān)服務器的相關(guān)信息。

      Server對象的常用屬性和方法如下:

      MachineName屬性         用于獲取服務器的計算機名稱
      ScriptTime屬性         用于設置或獲取請求服務器的超時時間,單位為秒
      CreateObject方法        用于創(chuàng)建COM對象的一個服務器實例
      Execute方法           用于使用另一頁面來執(zhí)行當前請求
      Transfer方法          用于終止當前頁的執(zhí)行,并開始執(zhí)行當前請求
      HtmlDecode方法         用于對要顯示在瀏覽器中的字符進行解碼
      HtmlEncode方法         用于對要顯示在瀏覽器中的字符進行編碼
      UrlDecode方法         對字符串進行解碼,該字符串為了HTTP傳輸而編碼并在URL中發(fā)送到服務器
      UrlEncode方法         用于編碼字符串,以便通過URL從web服務器到客戶端執(zhí)行可靠的HTTP傳輸
      UrlPathEncode方法       對URL字符串的路徑執(zhí)行URL編碼,返回該編碼字符串
      MapPath方法          返回與web服務區(qū)上的虛擬目錄對應的物理路徑
      ToString方法          以字符串的形式返回對象的信息

        HtmlEncode是Server對象中用得較多的一個方法,它用于對顯示在瀏覽器中的字符串進行編碼。首先看下面這條語句:

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

        其作用是在瀏覽器中局中并加粗顯示“ASP.NET”。但是如果我們需要將“<center><b>ASP.NET</b></center>”作為一個完整的字符串顯示在瀏覽器中,則通過HtmlEncode方法可以輕松的實現(xiàn),如:

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

        事實上,經(jīng)過HtmlEncode編碼后,字符串已經(jīng)轉(zhuǎn)換為:

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

      HtmlDecode方法的作用與HtmlEncode方法的作用相反,它將HTML編碼的代碼進行解碼,恢復代碼的本來面目。


      四、Application對象


        Application對象對應于ASP.NET中的HttpApplicationState類,它主要用來在整個應用程序中共享信息。Application對象可以直接在應用程序狀態(tài)中存儲變量和對象,這些變量和對象在整個應用程序執(zhí)行的所有ASP.NET頁面中都是可用的,其值也相同。例如,我們用的最多的保存頁面的訪問計數(shù)即可通過Application對象實現(xiàn)。

      Application對象的相關(guān)屬性和方法如下:

      Allkeys屬性         獲取應用程序狀態(tài)集合中的對象鍵
      Contents屬性        獲取應用程序狀態(tài)集合的對象引用
      Count屬性          獲取所含對象的總數(shù)
      StaticObjects屬性      獲取以<boject>標記的且其范圍設置為Application的所有對象
      Add方法           添加一個對象到應用程序狀態(tài)集合中
      Lock方法           鎖定應用程序狀態(tài)對象以保證并發(fā)訪問
      UnLock方法          取消鎖定
      Clear方法          從應用程序狀態(tài)集合中移除所有對象
      Remove方法         從應用程序狀態(tài)集合中移除指定對象
      RemoveAll方法        從應用程序狀態(tài)集合中移除所有對象

      例如,下面的語句在應用程序狀態(tài)內(nèi)創(chuàng)建一個新的變量,其名稱為“AppVarName”,值為“VarValue”:

      Application("AppvarNAame") = "VarValue"

        在一個ASP.NET頁面執(zhí)行這個語句后,在同一個應用程序的其他頁面都可以直接獲取AppVarName的值。要讀取應用程序狀態(tài)變量的值,可以使用如下語句:

      Response.Write(Application("AppVarName"))

        它在頁面上顯示應用程序狀態(tài)變量的值。
        當然,我們也可以將一個對象保存在應用程序狀態(tài)變量中。例如,講一個DataTable對象添加到應用程序狀態(tài)中,如下所示:

      Application("DataTable") = dtbDataTable

        實際上,應用程序狀態(tài)變量可以說是ASP.NET應用程序的全局變量,它一直保存到應用程序被關(guān)閉或者現(xiàn)實的刪除此變量時。因此,在應用程序狀態(tài)中添加復雜對象時,要考慮到應用程序的內(nèi)存開銷。

      要從應用程序狀態(tài)中移除特定的變量,可使用Remove方法。例如:

      Application.Remove("AppVarName")

        執(zhí)行此語句后,應用程序狀態(tài)中將不再存在AppVarName變量。
        若要移除應用程序狀態(tài)中所有變量。可使用Clear或者RemoveAll方法。例如:

      Application.Removeall()

      或者

      Application.Clear()

      五、Session對象

        Session對象對應于HttpSessionState類,它主要用于保存與當前用戶會話相關(guān)的信息。與Application對象不同的是,Session對象與用戶相關(guān)聯(lián)。對于同一個用戶,在應用程序內(nèi)不同的頁面訪問同一個Session變量,其值相同;而不同的用戶擁有不同的Session變量,其內(nèi)容不同。對于每一個Session對象,都有一個SessionID來唯一標識它。

      Session對象的相關(guān)屬性和方法如下:

      SessionID屬性        用于表示會話的標識ID
      Count屬性          當前會話狀態(tài)包含的項數(shù)
      Mode屬性          獲取當前會話的模式
      TimeOut屬性         會話狀態(tài)的過期時間,以分鐘為單位
      Abandon屬性         取消當前會話
      Clear方法          清除當前會話中的所有值
      RemoveAll方法        清除當前會話中的所有值
      Remove方法         清除當前會話中的指定值

      六、Cookie對象

        Cookie對象對應于HttpCookie類,它主要用來在用戶的瀏覽器上存儲小塊兒的信息,同時也可用來處理與當前用戶會話有關(guān)的信息。

      Cookie對象的相關(guān)屬性和方法如下:

      Name屬性              用于獲取Cookie的名字
      Value屬性              用于設置或獲取Cookie的值
      Domain屬性             用于設置或獲取與Cookie相關(guān)的域,默認為接收到該Cookie的主機
      Expires屬性             用于設置或獲取Cookie的過期時間
      Values屬性             用于獲取字典Cookie的鍵值
      HasKeys屬性             用于判斷是否包含鍵,即是否為字典Cookie
      Path屬性              用于獲取或設置與當前Cookie一起傳輸?shù)奶摂M路徑,通常保留其默認值
      Secure屬性             表示Cookie是否通過保密傳輸,默認為False

        Cookie對象可以分為兩種類型,即會話Cookie(SessionCookie)和持久性Cookie,前者是臨時的Cookie,一旦會話狀態(tài)結(jié)束便會自動的消失;后者則具有確定的過期時間。一般來說,持久性Cookie在用戶的計算機上都是以文本文件的形似存儲的。

        為創(chuàng)建一個Cookie,首先要初始化一個HttpCookie對象實例,然后將其添加到Response的Cookie集合中,例如:

      Dim objCookie As New HttpCookie("TestCookie","會話Cookie")
      Response.Cookikes.Add(objCookie)

        這里添加的是一個會話Cookie,它被添加到瀏覽器的會話內(nèi)存中,但不會被寫入到用戶的硬盤文件中。一旦用戶關(guān)閉瀏覽器,該Cookie對象便會消失。

        如果要創(chuàng)建一個持久性Cookie,則只需在創(chuàng)建時為其指定一個過期時間即可。這樣它就會以文本文件的形式保存到用戶的計算機中,直到到達指定的時間。例如:


      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內(nèi)容:" &Request.Cookies(CookieName).Value) &"<br />"

        值得注意的是,Cookie只能保存字符串信息,當保存的是整數(shù)值時,應先將其轉(zhuǎn)換為字符串。


        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多