初始ASP.NET---一般處理常式,初始asp.net---處理

來源:互聯網
上載者:User

初始ASP.NET---一般處理常式,初始asp.net---處理
       問題來源:

       今天在敲一個小的demo,利用Jquery實現級聯下拉框,敲的過程中發現無論怎麼和源碼對照都無法顯示想要的功能。這才想著原來是沒有寫後台代碼,詢問一清同學的時候,他告訴我可以利用ASP.NET的一般處理常式。

       我果然是菜鳥初學者,因為我還沒有接觸過一般處理常式!

       什麼是一般處理常式:

       一般處理常式:是一個實現System.Web.IHttpHandler介面的特殊類。任何一個實現了IHttpHandler介面的類,是作為一個外部請求的目標程式的前提。(凡是沒有實現此介面的類,就不能被瀏覽器請求。)它由支援ASP.NET的伺服器調用和啟動運行。 一個HttpHandler程式負責處理它所對應的一個或一組URL地址的訪問請求,並接收用戶端發出的訪問請求資訊(請求報文)和產生響應內容(響應報文)。

       優點:輕量化、效率較高

       建立一個一般處理常式將會產生兩個尾碼名的檔案.ashx和.ashx.cs。ashx裡只有一個指令集,沒有任何其他代碼;ashx.cs就是頁面處理代碼。如果有大量html,需要通過ashx來拼接字串或讀模數板的方式完成。其中.ashx.cs對應的內容,如以下代碼:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;    namespace web  {      /// <summary>      /// Handler 的摘要說明      /// </summary>      public class Handler : IHttpHandler      {          public void ProcessRequest(HttpContext context)          {              context.Response.ContentType = "text/plain";  //表示輸出結果類型            context.Response.Write("Hello World");  //輸出結果        }            public bool IsReusable          {              get              {                  return false;              }          }      }  }  

(1)HttpContext: 請求內容物件,包含:請求報文對象(HttpRequest),響應報文對象(HttpResponse),伺服器協助類(Server),Session等。

(2)FrameWork在接收到請求後,通過反射技術建立請求路徑對應的類的對象,並強制轉換成IHttpHandler介面對象(HttpHandler實現了IHttpHandler,之後的轉換相當於將子類強轉為父類),統一調用ProcessRequest方法處理。
(3)IsReusable屬性用來表示在IHttpHandlerFactory對象建立IHttpHandler的時候是否能夠將這個Handler存入池中以便重用。

(4)ContentTyp屬性是一般處理常式輸出響應內容,輸出的內容有可能是圖片、html等其他頁面,瀏覽器根據響應報文體內容不知道接收到的是什麼,需要判斷響應報文頭裡的ContentType來決定將報文體內容作為何種格式的資料來顯示。(image/jpeg----表示輸出的是圖片,text/plain--------表示輸出文本)

 

       從上面的代碼可以看到,一般處理常式實際上就是一個實現IHttpHandler介面的處理常式類,這個處理常式被ASP.NET直接在系統設定檔映射到了ashx副檔名的請求上。這樣,我們就不需要在設定檔中進行配置了。

        具體的用途:

       HttpHandler程式可以完成普通類程式所能完成的大多數任務:

           1.擷取用戶端通過HTML的Form表單提交的資料和URL參數

           2.建立對用戶端的響應訊息內容

           3.訪問伺服器端的檔案系統

           4.串連資料庫並開發基於資料庫的應用

           5.調用其他類

 

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;    namespace web  {      /// <summary>      /// Handler 的摘要說明      /// </summary>      public class Handler : IHttpHandler      {          public void ProcessRequest(HttpContext context)          {              context.Response.ContentType = "text/plain";  //表示輸出結果類型            context.Response.Write("Hello World");  //輸出結果        }            public bool IsReusable          {              get              {                  return false;              }          }      }  }  

        具體的運用:

       下面是利用Jquery實現級聯下拉框效果中,需要用一般處理常式獲得汽車類型的一般處理常式的代碼。

 public class Handler1 : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            string strCarName =context.Request["carnameValue"].ToString();             SqlConnection conn = new SqlConnection("server=.;database=car;uid=sa;pwd=123456;");   //定義連接字串            conn.Open();     //開啟串連            SqlDataAdapter sdr = new SqlDataAdapter();            sdr.SelectCommand =new SqlCommand ("selectid,cartype from t_cartype where carnameid='" + strCarName + "'",conn);             DataTable dt = new DataTable();             sdr.Fill(dt);            string str =DataTableToJson("1", dt);            context.Response.Write(str);        }         public bool IsReusable        {            get            {                return false;            }        }}

         總結:

       其實理論知識再好不會用也只會停留在理論層面。而編程又是這麼奇怪的一個東西無論別人講得多麼的詳細,都比不上自己的一次實踐。文中所提到的demo源碼,文章最後會附有下載連結。

 

demo源碼下載:http://download.csdn.net/detail/senior_lee/7697243


aspnet一般處理常式有什用

主要拿來產生動態圖片和動態文本,比傳統aspx檔案效率高,因為它不包含控制項解析和頁面處理的過程..樓上說用於ajax,其實就是用它來產生動態文本,你也可以拿來做驗證碼圖片等..不過它的作用應該不止於此吧,我看了下資料說它完全可以自訂Http請求,這些當然是屬於比較高深的內容了
 
aspnet 對於一般處理常式問題

可以
context.Request.QueryString["id"]

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.