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();
}

2005-5-29+ 认识httphandler相关推荐

  1. 2005年你看过的,认为比较好的书,请大家一起来评评

    我今年看过的书: 设计模式  第三遍了..呵呵..有时候莫名其妙的拿到书就很兴奋..充满魔力的书... 敏捷软件开发:原则.模式与实践   第二遍了..和第一本一样..同样充满着魔力.. Java编程 ...

  2. 2015年编程之美(资格赛) ---2月29日

    时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年份为闰年: ...

  3. 2005年个人防病毒软件评测报告

    硬件评测环境 CPU AMD 闪龙 2200+ 内存 256MB DDR400 主板 nForce 2 硬盘 西部数据 80GB/7200/2MB 软件评测环境 本次测试选择了Windows XP平台 ...

  4. Ajax.NET 作者发布支持Visual Web Developer 2005的模板安装

    个人觉得Ajax.NET 真的很好用,越来越喜欢他那种实现思路了,我就知道迟早一天会出现支持2005的版本,不过这里替作者纠正个错误,应该是Visual Web Developer 2005,好象ms ...

  5. UVA12439 February 29【日期计算】

    It is 2012, and it's a leap year. So there is a "February 29" in this year, which is calle ...

  6. hihocode-2月29

    问题描述: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个日期,计算这两个日期之间有多少个2月29日(包括起始日期). 只有闰年有2月29日,满足以下一个条件的年 ...

  7. 爱情日记(2005年3月)

    2005.3.1 晚上老公自己玩飞镖,很认真的. 我问:"还不睡?" 老公说:"等我六镖全中8环以内就睡,马上!" 我赶紧到床上躺下,说: "那我先睡 ...

  8. 新装的几个软件试用体会(WPS 2005,Opera,QQ 2005 Beta3)

    Opera 先说Opera,在98年开始上网时,用的是Netscape,大概到98年初,经当时的一个网友介绍,就开始使用Opera,当时版本好像是3.5.同时使用的还有ICQ.OICQ,也就是后来的Q ...

  9. 理解Session State模式+FAQ [翻译]

    作者:Patrick Y. Ng 原文地址:http://forums.asp.net/7504/ShowPost.aspx 译者:Tony Qu 译者Blog:tonyqus.cnblogs.com ...

  10. 网上几种常见校验码图片分析

    前几天受刺激了,准备把CSDN的校验码图片修改.就上网找了一些参考示例.和分析了一些校验码的功能.不敢独享,整理到一起,跟大家分享. 至于CSDN新的校验码写法,不是这里面的任何一种.也不是网上可以找 ...

最新文章

  1. 超长JVM总结,面试必备
  2. linux 系统管理(二) 磁盘分区
  3. C++自定义sobel求梯度
  4. 010. 使用.net框架提供的属性
  5. python抢红包random实现_python写红包的原理流程包含random,lambda其中的使用和见简单介绍...
  6. 用winform实现一个B/S代码更新打包工具
  7. matlab通信系统4g,matlab_通信原理.ppt
  8. nginx获取第三方ngixn中请求头信息以及判断是否有参数的跳转地址
  9. win10如何截屏_win10使用技巧分享!
  10. mysql performance tuning_Performance Tuning MySQL
  11. websocket 爬虫
  12. Tivoli Netcool/OMNIbus
  13. 【Linux】Linux 开放端口
  14. QPainterPath
  15. 苹果发通谍拒绝“热更新”,中国程序猿“最受伤”
  16. 〖全域运营实战白宝书 - 运营角色认知篇⑥〗- 不同企业的 “运营“ 不一样
  17. 超大Excel文件读取(支持50w+)(三)
  18. 棋牌游戏需要什么服务器
  19. 日本电视制造商起诉惠普 最高索赔1亿美元
  20. ArcGIS栅格转面失败 所转面为空 显示原栅格范围有问题

热门文章

  1. Quartz.NET simple_demo
  2. 用Python+Django在Eclipse环境下开发web网站【转】
  3. 监控cacti中的RRDtool用法详解
  4. 6月,回忆我失去的爱情
  5. wireshark使用教程 linux,Linux入门教程:ubuntu下安装wireshark(以及配置非root),这个强大的工具可以捕...
  6. nginx 注释配置及详解
  7. Oracle数据库查询用 where in 查询的项超过1000条的解决方案
  8. vim(三)golang代码跳转配
  9. nginx汇总(z)
  10. 保存现场数据和状态:onSaveInstanceState\onRestoreInstanceState\onCreate()