<%@ WebHandler Language="C#" Class="Handler" %>
using System; using System.Web;
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; } }
}
首先你發(fā)現(xiàn) <%@ WebHandler Language="C#" Class="ImageHandler" %>這句話。想想一個ASP.NET的頁面是不是也有類似的東西。其實它表明了現(xiàn)在的這個文件可以處理一個來自外部的請求。當然就它是不行的。 接下來關(guān)鍵的東西就是底下建立的類,它實現(xiàn)了一個關(guān)鍵的接口:IHttpHandler。實現(xiàn)這個接口表明你現(xiàn)在將以何種方式來處理來自外部的請求。其中有一個方法和屬性需要實現(xiàn),你可以在ProcessRequest方法中編寫如何處理請求的細節(jié)而IsReusable表明其它的請求是否可以使用這個類的一個實例。我們可以暫時忽略IsReusable屬性。將焦點轉(zhuǎn)到ProcessRequest方法上。在ProcessRequest中有一個參數(shù)context它是一個HttpContext類型,context對象提供對用于為 HTTP 請求提供服務(wù)的內(nèi)部服務(wù)器對象(如 Request、Response、Session 和 Server)的引用。也就是可以訪問我們的幾大服務(wù)器對象。 現(xiàn)在來看個簡單的例子。 請在你自己建立的WEB站點文件夾中隨便放一個圖片。我的想法是這樣,我先將一個圖片讀取成一個二進制的數(shù)據(jù)然后在將這個二進制的數(shù)據(jù)轉(zhuǎn)變成一個圖片。這其中需要你建立兩個文件。一個.ASPX文件和現(xiàn)在我們要實用的.ASHX文件。
文件ImageHandler.ashx
<%@ WebHandler Language="C#" Class="ImageHandler" %>
using System; using System.Web; /**//// <summary> /// 這就一個沒有任何實現(xiàn)的一般處理程序。 /// </summary> public class ImageHandler : IHttpHandler { public void ProcessRequest (HttpContext context) { //獲取虛擬目錄的物理路徑。 string path = context.Server.MapPath(""); //獲取圖片文件的二進制數(shù)據(jù)。 byte[] datas = System.IO.File.ReadAllBytes(path + http://www.cnblogs.com/dongpo888/admin/file:////123.jpg); //將二進制數(shù)據(jù)寫入到輸出流中。 context.Response.OutputStream.Write(datas, 0, datas.Length); } public bool IsReusable { get { return false; } }
}
default.aspx文件
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www./1999/xhtml" > <head runat="server"> <title>無標題頁</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Image ID="Image1" runat="server" ImageUrl="~/ImageHandler.ashx"/></div> </form> </body> </html> From:http://www.cnblogs.com/travelcai/archive/2007/09/25/904767.html
下面是組織HTML數(shù)據(jù)方式
System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.AppendFormat(" <div>歡迎 <font color=#ff0000>{0} </font> </div>", username); sb.AppendFormat(" <div> <a href='{0}'>進入管理中心 </a> </div>", "../manage/ask_list.htm"); sb.Append(" <div id='mytitle'> </div>"); context.Response.Write(sb.ToString());
|