httphandler是做什么的?(转)
来源:互联网 发布:非arp网管软件 编辑:程序博客网 时间:2024/04/27 17:03
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();
}
所谓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();
}
- httphandler是做什么的?(转)
- 麦当劳是做什么的?
- petshop是做什么的
- csdn是做什么的?
- Serializable是做什么的?
- lipo 是做什么的
- 程序员是做什么的
- SharePoint 是做什么的?
- Xen是做什么的?
- spring是做什么的
- java是做什么的
- assert是做什么的
- Onsubmit是做什么的?
- TRANSFORM_TEX是做什么的
- vuex是做什么的
- spring是用来做什么的
- 概要设计是做什么的?
- 社区经理是做什么的?
- 界面与后台工作线程分离的实现方案
- 课后3道作业
- 用命令开启 webdev.webserver.exe
- Div+CSS布局入门教程(一二三四)
- Oracle 数据库异常类型及代码
- httphandler是做什么的?(转)
- 发布VCSFramework ORM V0.9 bata
- Apache安装设置
- 名词解释: 域名解析 A记录 Mx记录 Cname记录
- js检测类库的基类
- 用IIS建立高安全性Web服务器
- 欢庆邓浩锋的blog开通.
- js功能类库
- 堆栈与内存的关系