HTTP请求处理器.ppt_第1页
HTTP请求处理器.ppt_第2页
HTTP请求处理器.ppt_第3页
HTTP请求处理器.ppt_第4页
HTTP请求处理器.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HTTP请求处理器,ASP.NET企业级应用编程第十一章,MVC模式 页面控制器:Page基类 页面上下文对象:Context 请求处理器:IHttpHandle,本章目标,MVC模式,什么是MVC MVC由Trygve Reenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系统的构成基础。 根据界面设计可变性的需求,MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件。,MVC模式,MVC基本结构,MVC模式,视图 视图是模型的表示,它提供用户交互界面。 在ASP.NET中主要是指界面的设计 主要包括: WEB页面

2、基类PageBase 页面布局策略类PageLayout 用户控件基类UserControlBase即用户控件框架,用于动态加载检验部件,以及实现用户控件的个性化,MVC模式,控制器 控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。,MVC模式,模型 MVC系统中的模型从概念上可以分为两类系统的内部状态和改变系统状态的动作 模型是所有的商业逻辑代码片段所在,MVC模式,在ASP.NET中实现MVC 视图部分:.aspx页面 控制器部分:.aspx.cs代码 模型部分:业务处理类 案例演示,MVC

3、模式,ASP.NET中实现MVC模式有如下优缺点 优点: 能够减少依赖。 能够减少代码的复制。 能够把不同人员的责任分开。 使性能优化的成为可能 易测试性 缺点: 增加了代码的复杂度,页面控制器:Page基类,服务器处理Http请求的基本原理,页面控制器:Page基类,Page基类基本介绍 默认情况下,ASP.NET应用程序中的所有Web窗体页面,都继承自System.Web.UI.Page。这个类实现了作为HttpHandler的必要功能,ASP.NET运行库在检测到调用某个页面的请求时,就会调用这个类。 HttpHandler是处理请求的终端 ,Page类是HttpHandler用于处理和

4、显示Web窗体的一种特定实现方式。,页面控制器:Page基类,Page基类的作用 利用Page基类可以通过抽象页面中的共性部分,从而减少代码的冗余,同时也提高了系统搭建的灵活性。,页面上下文对象Context,Context基本介绍 Context对象是 System.Web.HttpContext类型的对象,使用Context对象来共享页之间的信息 其最大的特点就是可以通过用户控件和业务对象获得该对象,页面上下文对象Context,重要的Context对象,Context的使用,从业务类中生成一个 ASP.NET跟踪语句,using System; using System.Web; nam

5、espace Context public class TraceEmit public void SomeMethod() / 获取请求上下文 HttpContext _context = HttpContext.Current; / 使用上下文编写跟踪语句 _context.Trace.Write(在 TraceEmit.SomeMethod 中); ,Context的使用,在业务类中访问Session,using System; using System.Web; namespace Context public class UseSession public void SomeMeth

6、od() / 获取请求上下文 HttpContext _context = HttpContext.Current; / 访问内部会话 object _value = _context.SessionTheValue; ,请求处理器:HttpHandler,处理请求的管道模型,请求开始,模块动作,最终处理,处理返回,请求处理器:HttpHandler,Httphandler的实现 ProcessRequest:该方法用来处理http请求,是httphandler最核心的方法 IsReusable:一个属性,返回一个bool值,来表示这httphandler的实例是否能被重用来处理多个同类型的h

7、ttp请求。,请求处理器:HttpHandler,在配置文件中注册httpHandler, ,verb属性,verb属性则为POST,GET;如果支持所有的请求方式,verb属性则用* path属性说明了对哪些文件的请求才调用该handler来处理。 type属性中指定了handler类的命名空间、类名。,实现IHttpHandler接口演示,public class NewHandler : IHttpHandler public NewHandler() / TODO: Add constructor logic here #region Implementation of IHttpHa

8、ndler public void ProcessRequest(System.Web.HttpContext context) HttpResponse objResponse = context.Response ; objResponse.Write(Hi,This is a test! ) ; objResponse.Write() ; public bool IsReusable get return true; #endregion ,如果想使用Session,则还需要实现IRequiresSessionState 接口,实现IHttpHandler接口演示,添加配置, ,实现IH

9、ttpHandler接口演示,在IIS中添加扩展,当在浏览器里输入http:/localhost/MyHandler/xxx.possible时,该handler将被调用。,IHttpHandler工厂,IHttpHandlerFactory,public interface IHttpHandlerFactory IHttpHandler GetHandler(HttpContext ctx,string requestType,string url,string pathTranslated); void ReleaseHandler(IHttpHandler handler); ,Get

10、Handler方法在请求开始的时候被调用 ReleaseHandler在请求结束,所有的Handler都不再需要的时候被调用,IHttpHandler工厂演练,定义实际处理HttpHandler的类,public class CommonUser: IHttpHandler public virtual void ProcessRequest(HttpContext context) context.Response.Write(普通用户); public virtual bool IsReusable get return true; public class VIPUser: IHttpH

11、andler public virtual void ProcessRequest(HttpContext context) context.Response.Write(贵宾); public virtual bool IsReusable get return true; ,IHttpHandler工厂演练,定义HandlerFactory,public class UserHandlerFactory : IHttpHandlerFactory public IHttpHandler GetHandler(HttpContext ctx,string requestType,string

12、 url,string pathTranslated) string fname = url.Substring(url.LastIndexOf(/)+1); string cname = fname.Substring(0, fname.IndexOf(.); string className = Shop. + cname; object h = Activator.CreateInstance(Type.GetType(className); return (IHttpHandler)h; public void ReleaseHandler(IHttpHandler handler) ,IHttpHandler工厂演练,添加配置, ,IHttpHandlerFactor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论