2005-5-29+ 认识httphandler
httphandler是做什么的?用任何一個搜索引擎都可以找到一大堆資料,我就不多說了,把我今天學(xué)習(xí)的一些認(rèn)識寫在這里,希望可以從另一個側(cè)面讓大家認(rèn)識httphandler。
所謂httphandler,其實(shí)是.net用來處理頁面請求的。大家可以想想,forms驗(yàn)證所能保護(hù)的只是.aspx后綴的文件,而.config后綴的文件是不可訪問的。所有這些都是由asp.net內(nèi)置的一些httphandler處理的。而我們之所以要學(xué)習(xí)使用httphandler,主要是因?yàn)槲覀兿胱约簛硖幚硪恍﹉ttp請求。
從google上搜索"httphandler .net",大概搜到的httphandler的用途有:
1.防止盜鏈。主要是防止圖片的盜鏈。
2.使用url重寫。這個我還沒有仔細(xì)看,大概的意思就是可以使Url轉(zhuǎn)向正確的地址,比如說把很長的url變短,使不存在的url轉(zhuǎn)到提示錯誤或默認(rèn)的地址。
3.執(zhí)行一些短小方便的作用。比如有的文章說使用httphandler來實(shí)現(xiàn)注銷功能。
4.等等等等
作為asp.net的http處理的核心之一,httphandler的作用自然不止這些。我最近要學(xué)httphandler主要是因?yàn)槲艺业墓ぷ?#xff08;要畢業(yè)了,Hoho...)要使用這個來處理自定義的后綴名的文件,形如http://localhost/hello.notus這樣的網(wǎng)頁,站內(nèi)所有頁面的后綴名都使用.notus,為的是使用自定義的頁面生成方法(主要是在生成頁面的時候使用了xml+xslt)。
上面說了一些httphandler的作用,下面把今天學(xué)習(xí)的內(nèi)容下下來,我敢說下面肯定有你需要的東西,因?yàn)檫@個東西我是好久才悟出來的(什么,大家當(dāng)時一看就知道了?難道我真的是最笨的?)
查閱.net sdk 文檔,你會發(fā)現(xiàn)有IHttpHandler和IHttpHandlerFactory,前面的是自定義httphandler所需要實(shí)現(xiàn)的接口,后面的是是自定義返回httphandler的工廠所需要實(shí)現(xiàn)的接口,這兩個東西在web.config中的注冊方法都是一樣的。對于前者,很好理解,那后面的工廠是做什么的?
答案自然是返回一個httphandler(……)。
返回的httphandler是做什么的?
答案是用來處理當(dāng)前的http請求。
既然都是處理當(dāng)前的http請求,那為什么不直接用IHttpHandler?
不知道。
工廠是什么?
是工廠模式吧?
工廠模式是做什么的?
可以根據(jù)客戶需要返回合適的產(chǎn)品。
那IHttpHandlerFactory的作用是什么?
嗯,根據(jù)當(dāng)前的http請求返回合適的HttpHandler。
看到了吧,就是這個意思哦。比如說要對http://localhost/hello.notus這個url進(jìn)行特別的處理,那當(dāng)請求這個Url時,工廠就單獨(dú)返回處理hello的HttpHandler,而是其它的url時,就返回一個通用的HttpHandler
下面是簡單的代碼示例:
System.Web.IHttpHandler GetHandler(System.Web.HttpContext context, string requestType, string url, string pathTranslated)
{
//文件的全名
string fname=url.Substring(url.LastIndexOf("/")+1);
//文件名
string cname=fname.Substring(0,fname.IndexOf("."));
//根據(jù)需要返回合適的HttpHandler
if(cname=="hello")
return new HandlerHello();
else
return new HandlerCommon();
}
總結(jié)
以上是生活随笔為你收集整理的2005-5-29+ 认识httphandler的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 毕业设计——第三章 开发方法及系统实现(
- 下一篇: 下午回家啦~