初识ASP.NET---一般处理程序
問題來源:
今天在敲一個小的demo,利用Jquery實現級聯下拉框,敲的過程中發現不管怎么和源代碼對比都無法顯示想要的功能。
這才想著原來是沒有寫后臺代碼,詢問一清同學的時候,他告訴我能夠利用ASP.NET的一般處理程序。
我果然是菜鳥剛開始學習的人,由于我還沒有接觸過一般處理程序。
什么是一般處理程序:
一般處理程序:是一個實現System.Web.IHttpHandler接口的特殊類。不論什么一個實現了IHttpHandler接口的類。是作為一個外部請求的目標程序的前提。
(凡是沒有實現此接口的類,就不能被瀏覽器請求。)它由支持ASP.NET的server調用和啟動執行。一個HttpHandler程序負責處理它所相應的一個或一組URL地址的訪問請求,并接收client發出的訪問請求信息(請求報文)和產生響應內容(響應報文)。
長處:輕量化、效率較高
創建一個一般處理程序將會生成兩個后綴名的文件.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幫助類(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.獲取client通過HTML的Form表單提交的數據和URL參數
2.創建對client的響應消息內容
3.訪問server端的文件系統
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
總結
以上是生活随笔為你收集整理的初识ASP.NET---一般处理程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两个很有用的进程间通信函数popen,p
- 下一篇: 5、Oracle数据库审计