已被阅读 1657 次 | 文章分类:csharp | 2018-10-03 01:25
一般处理程序是在.net 平台通过C#语言实现System.Web.IHttpHandler接口的特殊类;一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)
一:认识HttpHandler接口
1.通过HttpHandler程序可以完成:获取客户端通过HTML的Form表单提交的数据和URL参数;创建对客户端的响应消息内容;访问服务器端的文件系统;连接数据库并开发基于数据库的应用.
2.HttpHandler接口类包括两个成员:ProcessRequest方法与Isusable属性;对http的请求主要在ProcessRequest中实现。
3. 在处理程序中,可以右键查看定义,定位到关于IHandler接口类的定义,如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace handler
{
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
二:新建一般处理程序项目
1.首先用Visual Studio 2013新建一个空的web项目,然后右键项目添加新项,找到一般处理程序;会生成如下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace handler
{
public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
通过访问http://localhost:10099/Handler1.ashx,结果页面输出Hello World
(1) HttpContext: 请求上下文对象,包含:请求报文对象(HttpRequest),响应报文对象(HttpResponse),服务器帮助类(Server),Session等。
(2) ContentType属性:是一般处理程序输出响应内容,输出的内容有可能是图片、html等其他页面,浏览器根据响应报文体内容不知道接收到的是什么,需要判断响应报文头里的ContentType来决定将报文体内容作为何种格式的数据来显示
2.输出一个网页
context.Response.ContentType = "text/html";
context.Response.Write("<html><head></head><body><h1>welcome to xiaobaigis.com</h1></body></html>");
3.输出一个文件
context.Response.ContentType = "image/jpg";
context.Response.WriteFile("xiaobaigis.jpg");
基本原理:.net在接收到请求后,通过反射技术创建一个请求路径对应的类(即继承IHttpHandler接口)的对象,并强制转换成IHttpHandler接口对象(处理器类实现了IHttpHandler,转换相当于将子类强转为父类),然后统一调用ProcessRequest方法处理
QQ:3410192267 | 技术支持 微信:popstarqqsmall
Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号