认识httphandler
httphandler是做什么的?用任何一個搜索引擎都可以找到一大堆資料,我就不多說了,把我今天學習的一些認識寫在這里,希望可以從另一個側面讓大家認識httphandler。
所謂httphandler,其實是.net用來處理頁面請求的。大家可以想想,forms驗證所能保護的只是.aspx后綴的文件,而.config后綴的文件是不可訪問的。所有這些都是由asp.net內置的一些httphandler處理的。而我們之所以要學習使用httphandler,主要是因為我們想自己來處理一些http請求。
從google上搜索"httphandler .net",大概搜到的httphandler的用途有:
1.防止盜鏈。主要是防止圖片的盜鏈。
2.使用url重寫。這個我還沒有仔細看,大概的意思就是可以使Url轉向正確的地址,比如說把很長的url變短,使不存在的url轉到提示錯誤或默認的地址。
3.執行一些短小方便的作用。比如有的文章說使用httphandler來實現注銷功能。
4.等等等等
作為asp.net的http處理的核心之一,httphandler的作用自然不止這些。我最近要學httphandler主要是因為我找的工作(要畢業了,Hoho...)要使用這個來處理自定義的后綴名的文件,形如http://localhost/hello.notus這樣的網頁,站內所有頁面的后綴名都使用.notus,為的是使用自定義的頁面生成方法(主要是在生成頁面的時候使用了xml+xslt)。
上面說了一些httphandler的作用,下面把今天學習的內容下下來,我敢說下面肯定有你需要的東西,因為這個東西我是好久才悟出來的(什么,大家當時一看就知道了?難道我真的是最笨的?)
查閱.net sdk 文檔,你會發現有IHttpHandler和IHttpHandlerFactory,前面的是自定義httphandler所需要實現的接口,后面的是是自定義返回httphandler的工廠所需要實現的接口,這兩個東西在web.config中的注冊方法都是一樣的。對于前者,很好理解,那后面的工廠是做什么的?
答案自然是返回一個httphandler(……)。
返回的httphandler是做什么的?
答案是用來處理當前的http請求。
既然都是處理當前的http請求,那為什么不直接用IHttpHandler?
不知道。
工廠是什么?
是工廠模式吧?
工廠模式是做什么的?
可以根據客戶需要返回合適的產品。
那IHttpHandlerFactory的作用是什么?
嗯,根據當前的http請求返回合適的HttpHandler。
看到了吧,就是這個意思哦。比如說要對http://localhost/hello.notus這個url進行特別的處理,那當請求這個Url時,工廠就單獨返回處理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("."));
//根據需要返回合適的HttpHandler
if(cname=="hello")
return new HandlerHello();
else
return new HandlerCommon();
}
轉載于:https://www.cnblogs.com/yzxchoice/archive/2006/09/27/515988.html
總結
以上是生活随笔為你收集整理的认识httphandler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9月22日培训日记(上)
- 下一篇: 设计模式学习笔记(十)——Decorat