初识ASP.NET---一般处理程序

来源:互联网 发布:网络学校国家承认吗 编辑:程序博客网 时间:2024/05/22 06:43

       问题来源:

       今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现无论怎么和源码对照都无法显示想要的功能。这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我可以利用ASP.NET的一般处理程序。

       我果然是菜鸟初学者,因为我还没有接触过一般处理程序!

       什么是一般处理程序:

       一般处理程序:是一个实现System.Web.IHttpHandler接口的特殊类。任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。)它由支持ASP.NET的服务器调用和启动运行。 一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)。

       优点:轻量化、效率较高

       创建一个一般处理程序将会生成两个后缀名的文件.ashx和.ashx.cs。ashx里只有一个指令集,没有任何其他代码;ashx.cs就是页面处理代码。如果有大量html,需要通过ashx来拼接字符串或读取模板的方式完成。其中.ashx.cs对应的内容,如以下代码:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;    namespace web  {      /// <summary>      /// Handler 的摘要说明      /// </summary>      public class Handler : IHttpHandler      {          public void ProcessRequest(HttpContext context)          {              context.Response.ContentType = "text/plain";  //表示输出结果类型            context.Response.Write("Hello World");  //输出结果        }            public bool IsReusable          {              get              {                  return false;              }          }      }  }  

(1)HttpContext: 请求上下文对象,包含:请求报文对象(HttpRequest),响应报文对象(HttpResponse),服务器帮助类(Server),Session等。

(2)FrameWork在接收到请求后,通过反射技术创建请求路径对应的类的对象,并强制转换成IHttpHandler接口对象(HttpHandler实现了IHttpHandler,之后的转换相当于将子类强转为父类),统一调用ProcessRequest方法处理。
(3)IsReusable属性用来表示在IHttpHandlerFactory对象创建IHttpHandler的时候是否能够将这个Handler存入池中以便重用。

(4)ContentTyp属性是一般处理程序输出响应内容,输出的内容有可能是图片、html等其他页面,浏览器根据响应报文体内容不知道接收到的是什么,需要判断响应报文头里的ContentType来决定将报文体内容作为何种格式的数据来显示。(image/jpeg----表示输出的是图片,text/plain--------表示输出文本)

 

       从上面的代码可以看到,一般处理程序实际上就是一个实现IHttpHandler接口的处理程序类,这个处理程序被ASP.NET直接在系统配置文件映射到了ashx扩展名的请求上。这样,我们就不需要在配置文件中进行配置了。

       具体的用途:

       HttpHandler程序可以完成普通类程序所能完成的大多数任务:

           1.获取客户端通过HTML的Form表单提交的数据和URL参数

           2.创建对客户端的响应消息内容

           3.访问服务器端的文件系统

           4.连接数据库并开发基于数据库的应用

           5.调用其他类

 

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;    namespace web  {      /// <summary>      /// Handler 的摘要说明      /// </summary>      public class Handler : IHttpHandler      {          public void ProcessRequest(HttpContext context)          {              context.Response.ContentType = "text/plain";  //表示输出结果类型            context.Response.Write("Hello World");  //输出结果        }            public bool IsReusable          {              get              {                  return false;              }          }      }  }  

       具体的运用:

       下面是利用Jquery实现级联下拉框效果中,需要用一般处理程序获得汽车类型的一般处理程序的代码。

 public class Handler1 : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/plain";            string strCarName =context.Request["carnameValue"].ToString();             SqlConnection conn = new SqlConnection("server=.;database=car;uid=sa;pwd=123456;");   //定义连接字符串            conn.Open();     //打开连接            SqlDataAdapter sdr = new SqlDataAdapter();            sdr.SelectCommand =new SqlCommand ("selectid,cartype from t_cartype where carnameid='" + strCarName + "'",conn);             DataTable dt = new DataTable();             sdr.Fill(dt);            string str =DataTableToJson("1", dt);            context.Response.Write(str);        }         public bool IsReusable        {            get            {                return false;            }        }}

        总结:

       其实理论知识再好不会用也只会停留在理论层面。而编程又是这么奇怪的一个东西无论别人讲得多么的详细,都比不上自己的一次实践。文中所提到的demo源码,文章最后会附有下载链接。

 

demo源码下载:http://download.csdn.net/detail/senior_lee/7697243

6 1
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 大话西游账号忘记了怎么办 网易云忘记账号怎么办 校园网登录不上怎么办 wifi名称隐藏了怎么办 玩游戏不能全屏怎么办 方舟手机版回档怎么办 进京证审核中怎么办 美篇审核中怎么办 视频不能转码怎么办 文件太大上传不了怎么办 数据库添加日志错误怎么办 桌面计算机图标不见了怎么办 qq空间封闭了怎么办 血小板600多怀孕怎么办 干活要不到工钱怎么办 银联手机号换了怎么办 深圳个体户工商年检怎么办 三个人合伙怎么办执照 两个人合伙怎么办执照 单位公章坏了怎么办 公章外壳坏了怎么办 公司变更名称银行怎么办 公司被起诉了怎么办 微信限制搜索怎么办 微博vip改不了怎么办 改不了微信号怎么办 修改不了微信号怎么办 触屏自检失败怎么办 微信名片加不上怎么办 微信号不是手机号怎么办 qq被盗号了怎么办 不知道对方名字怎么办 qq密码找不到了怎么办 好朋友跟你告白怎么办 感情破裂没证据怎么办 在微信里找不到昵称怎么办 营业执照副本丢了怎么办 个体营业执照副本丢失怎么办 三联发票丢了怎么办 发票领用簿用完怎么办 忘记三证合一怎么办