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

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

2. servlet 与 IHttpHandler1

3. HttpModule的职责 listener2

4. 19个标准事件 3

5. 参考4

1. 由于HTTP请求有很多种请求类型,比如请求aspx、html、jpg等等。因此,仅仅由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 paramServletResponse) throws 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://www.cnblogs.com/attilax/

3. HttpModule的职责 listener

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

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

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

4. 19个标准事件

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

HttpApplication的19个标准事件如下:

事件名称

说明

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

HttpHandler与HttpModule的用处与区别 - 逆心 - 博客园.htm

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

  1. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle

    Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3.  ...

  2. Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python

    Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python 1. 上传的几点要求2 1.1. 本地预览2 1.2 ...

  3. Atitit.跨语言异常转换机制 java c# php到js的异常转换

    Atitit.跨语言异常转换机制 java c# php到js的异常转换 1. bizEx   直接抓取,然后js catchEX1 2. Chkec runtimeEx1 3. Other异常..J ...

  4. Atitit.数据库表的物理存储结构原理与架构设计与实践

    Atitit.数据库表的物理存储结构原理与架构设计与实践 1. Oracle和DB2数据库的存储模型如图: 1 1.1. 2. 表数据在块中的存储以及RowId信息3 2. 数据表的物理存储结构 自然 ...

  5. Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae

    Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异 ...

  6. Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结

    Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结 1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码, ...

  7. Atitit.木马病毒websql的原理跟个设计

    Atitit.木马病毒websql的原理跟个设计 1. Keyword Wsql { var sql="select "+p.txt+" as t,"+p.v+ ...

  8. Atitit.架构设计趋势 设计模式 ---微服务架构  soa

    Atitit.架构设计趋势 设计模式 ---微服务架构  soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...

  9. Atitit.atiRI  与 远程调用的理论and 设计

    Atitit.atiRI  与 远程调用的理论and 设计 1. 怎么做到透明化远程服务调用?1 2. 2  怎么对消息进行编码和解码1 2.1.  确定消息数据结构dsl1 2.1.1. 消息里为什 ...

随机推荐

  1. rngd.service 启动失败的处理

    [root@localhost ~]# systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION ● mdmonitor.service loaded f ...

  2. VS code 的变量设定

    文档来自https://code.visualstudio.com/docs/editor/variables-reference 预定义的变量有: ${workspaceFolder} - the ...

  3. httpd2.4出现AH00025: configuration error

    log文件 安装的是包含ssl的版本,需要加载 LoadModule authz_core_module modules/mod_authz_core.so

  4. POJ 2763 Housewife Wind(树链剖分+树状数组)

    [题目链接] http://poj.org/problem?id=2763 [题目大意] 在一棵树上,给出一些边的边长,有修改边的边长的操作, 询问每次从当前点到目标点的最短距离 [题解] 树链剖分之 ...

  5. 【dfs】【高斯消元】【异或方程组】bzoj1770 [Usaco2009 Nov]lights 燈 / bzoj2466 [中山市选2009]树

    经典的开关灯问题. 高斯消元后矩阵对角线B[i][i]若是0,则第i个未知数是自由元(S个),它们可以任意取值,而让非自由元顺应它们,得到2S组解. 枚举自由元取0/1,最终得到最优解. 不知为何正着 ...

  6. 【暴力】vijos P1897 学姐吃牛排

    判断堆:递归判断每个节点的孩子是否都比其父亲大(小). 判断BST:中序遍历是否有序. #include<cstdio> using namespace std; #define lc ( ...

  7. jvm-监控指令-jstack

    格式: jstack [option] vmid 选项: -l 除了堆栈信息外,显示关于锁的附加信息. 作用: 生成虚拟机当前时刻的线程快照. 目的: 定位线程长时间停顿的原因,比如线程间死锁.死循环 ...

  8. Spring中@Value用法收集

    一.配置方式 @Value需要参数,这里参数可以是两种形式: @Value("#{configProperties['t1.msgname']}") 或者 @Value(" ...

  9. Linux之ps查找进程用kill终止命令

    http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html http://blog.csdn.net/andy572633/article ...

  10. 几种常用的json序列化和反序列化工具介绍

    一.前言 Json序列化和反序列化工作中会时常用到,也是目前数据交互的常用格式,Rest风格的接口加上json格式的数据交互,真的是天作之合. 目前Json字符与Json对象的相互转换方式有很多,接下 ...