Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
来源:互联网 发布:java.util 编辑:程序博客网 时间:2024/06/03 12:39
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://blog.csdn.net/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 j
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
- Atitit.upnp SSDP 查找nas的原理与实现java php c#.net c++
- Atitit.导出excel报表的设计与实现java .net php 总结
- Atitit.导出excel报表的设计与实现java .net php 总
- atitit.木马病毒webshell的原理and设计 java c# .net php.
- Atitit.atiRI 与 远程调用的理论and 设计
- atitit.Atitit.检测文本文件的编码 java 与php版 。Net
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
- Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python
- atitit.复合变量,也就是类似$$a的变量的原理与实现 java c#.net php js
- Atitit 文件上传 架构设计 实现机制 解决方案 实践java php c#.net js javascript c++ python
- Atitit 项目语言的选择 java c#.net php??
- Atitit.面向接口的web 原理与设计重写 路由启动绑定配置url router rewriting urlpage mvc mvp的 java c#.net php js
- Atitit.异常的设计原理与 策略处理 java 最佳实践 p93
- Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理
- Atitit 异常的实现原理 与用户业务异常
- 03、坐标系、锚点
- 第二章 IoC 之 2.2 IoC容器基本原理
- iOS Info.plist文件
- @interface in .m file
- 初学unity3D-2016/01/18
- Atitit. servlet 与 IHttpHandler ashx listen 和HttpModule的区别与联系 原理理论 架构设计 实现机制 java php c#.net j
- JS在EditPus中无法通过getAttribute()获取class属性---解决办法
- U3D大师练成记之小白篇(一)
- 使用常见的网络命令查看当前网络状态——Mac OS X篇
- SalesForce
- Java 多态
- viewpager左右滑动的 +Tab指示(方式4-------------ViewPager+ViewPagerIndicator)
- 分享我创业4年失败的经历
- 超精密的iOS笔记.pdf