zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    msyql多个or,and,
    mysql中 where in 用法详解
    history.back(-1)和history.go(-1)的区别
    经典 mysql 28道题
    企业案例(二):增量恢复案例
    企业案例(一):由于mysql sleep线程过多小故障
    mysql数据库恢复
    binlog介绍
    mysql 数据库备份
    docker入门与实践
  • 原文地址:https://www.cnblogs.com/Dreamfly/p/392257.html
Copyright © 2011-2022 走看看