zoukankan      html  css  js  c++  java
  • Atitit. servlet 与 IHttpHandler  ashx  listen 和HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net j

    Atitit. servlet 与 IHttpHandler  ashx  listen HttpModule的区别与联系 原理理论 架构设计   实现机制    java php c#.net js javascript  c++ python  

     

    1由于HTTP请求有很多种请求类型,比如请求aspxhtmljpg等等。因此,仅仅由HttpApplication直接处理请求时很臃肿的,而且不利于扩展。因此 采用了抽象工厂模式来处理这些请求。 允许我们制定某些请求映射到一个HttpHandlerFactory1

    2servlet 与 IHttpHandler1

    3HttpModule的职责 listener2

    419个标准事件 3

    5参考4

     

     

     

    1. 由于HTTP请求有很多种请求类型,比如请求aspxhtmljpg等等。因此,仅仅由HttpApplication直接处理请求时很臃肿的,而且不利于扩展。因此 采用了抽象工厂模式来处理这些请求。 允许我们制定某些请求映射到一个HttpHandlerFactory

    所以,我们应该这样理解HttpHanlder一个HttpHanlder用于响应一类的请求,为一类的请求生成响应结果。

     

    2. servlet 与 IHttpHandler 

    Httphandler更加的名称含义明确,,程序集 都能实现HTTP请求/响应模式

     

     

     

     

    @WebServlet(name = "FileUploadServiceServlet", urlPatterns = "/CommonServlet"

    public class CommonServlet implements Servlet {

     

     

    public static ThreadLocal<ServletResponse>  resp=new ThreadLocal<ServletResponse>();

    @Override

    public void service(ServletRequest req,

    ServletResponse paramServletResponsethrows IOException,

    ServletException {

    resp.set(paramServletResponse);

    String ret=new UrlDslParserV2().exe((HttpServletRequest)req);

    paramServletResponse.getWriter().println(ret);

    }

     

    }

     

     

    作者:: 绰号:老哇的爪子 ( 全名::Attilax akbar al rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://blog.csdn.net/attilax

     

    3. HttpModule的职责 listener

     

    有时候有些页面需要一些相同的检查功能,比如身份验证。明显使用HttpHandler是不方便的,因为不是所有的页面都需要去调用那些相同的功能。

     

    HttpModule的设计正是提供了一个灵活的方法解决这种功能重用的问题,它采用事件(观察者)的设计模式,将某些HttpHandler都需要的功能抽取出来,形成不同的观察者类型,这些观察者类型可以编译成类库形式,供多个网站共用

     

    HttpModuleHttp模块。实际上就是那19个标准事件的处理者,或者说19个标准事件的订阅者,比如OutputCacheModuleSessionStateModule。详细可以到在这篇文章里面看到

     

    4. 19个标准事件

    HttpApplication中,利用. 中的事件机制,通过在处理过程中依次发出的多个事件,将这个处理过程分解为多个步骤,这个处理机制通常我们称为处理管道。

     

    HttpApplication19个标准事件如下:

    事件名称

    说明

    BeginRequest

    Asp.net处理的第一个事件,表示处理的开始

    AuthenticateRequest

    验证请求,一般用来取得请求用户的信息

    PostAuthenticateRequest

    已经获取请求用户的信息

    AuthorizeRequest

    授权,一般用来检查用户的请求是否获得权限

    PostAuthorizeRequest

    用户请求已经得到授权

    ResolveRequestCache

    获取以前处理缓存的处理结果,如果以前缓存过,那么,不必再进行请求的处理工作,直接返回缓存结果

    PostResolveRequestCache

    已经完成缓存的获取操作

    PostMapRequestHandler

    已经根据用户的请求,创建了处理请求的处理器对象

    AcquireRequestState

    取得请求的状态,一般用于Session

    PostAcquireRequestState

    已经取得了Session

    PreRequestHandlerExecute

    准备执行处理程序

    PostRequestHandlerExecute

    已经执行了处理程序

    ReleaseRequestState

    释放请求的状态

    PostReleaseRequestState

    已经释放了请求的状态

    UpdateRequestCache

    更新缓存

    PostUpdateRequestCache

    已经更新了缓存

    LogRequest

    请求的日志操作

    PostLogRequest

    已经完成了请求的日志操作

    EndRequest

    本次请求处理完成

     

    t服务器对于每一次请求的处理过程都相同,都要经过这个HttpApplication处理管道。管道内部的处理过程是固定的,在服务器处理请求的各个阶段,伴随着处理的进行,依次触发对应的事件,以便于程序员在处理的各个阶段完成自定义的处理工作。

    1、最先触发的事件是BeginRequest,这个事件标志着 服务器处理工作得开始,也是程序员在 中针对请求所能够处理的第一个事件。

     

    5. 参考

    HttpApplication处理对象与HttpModule处理模块 (第三篇) - 逆心 博客园.htm

    HttpHandlerHttpModule的用处与区别 逆心 博客园.htm

     

  • 相关阅读:
    一则Entity Framework 学习中的问题
    用于主题检测的临时日志(861e835361d543a9b1b4e055dac9cf39 3bfe001a32de4114a6b44005b770f6d7)
    同一数据库如果处理多个完全不同的业务?
    swif debounce实现
    SQL Server 2008 下载地址(微软官方网站)
    fastreport 3的安装步骤
    修改windows server 2008 时间和日期格式 IIS配置后显示错误
    SQL server2000数据库备份和还原语句
    安装oracle,创建并启动oracle实例(创建克隆数据库,进度条在45%)就进行不下去了
    使用poi读写excel文件
  • 原文地址:https://www.cnblogs.com/attilax/p/5963556.html
Copyright © 2011-2022 走看看