天天看點

初識ASP.NET---一般處理程式

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

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

       一般處理程式:是一個實作system.web.ihttphandler接口的特殊類。任何一個實作了ihttphandler接口的類,是作為一個外部請求的目标程式的前提。(凡是沒有實作此接口的類,就不能被浏覽器請求。)它由支援asp.net的伺服器調用和啟動運作。 一個httphandler程式負責處理它所對應的一個或一組url位址的通路請求,并接收用戶端發出的通路請求資訊(請求封包)和産生響應内容(響應封包)。

       優點:輕量化、效率較高

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

(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.調用其他類

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

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

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