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

问题来源:

今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现不管怎么和源代码对比都无法显示想要的功能。

这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我能够利用ASP.NET的一般处理程序。

我果然是菜鸟刚開始学习的人,由于我还没有接触过一般处理程序。

什么是一般处理程序:

一般处理程序:是一个实现System.Web.IHttpHandler接口的特殊类。不论什么一个实现了IHttpHandler接口的类。是作为一个外部请求的目标程序的前提。

(凡是没有实现此接口的类,就不能被浏览器请求。)它由支持ASP.NET的server调用和启动执行。 一个HttpHandler程序负责处理它所相应的一个或一组URL地址的訪问请求,并接收client发出的訪问请求信息(请求报文)和产生响应内容(响应报文)。

长处:轻量化、效率较高

创建一个一般处理程序将会生成两个后缀名的文件.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帮助类(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.获取client通过HTML的Form表单提交的数据和URL參数

2.创建对client的响应消息内容

3.訪问server端的文件系统

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

时间: 2024-10-28 23:58:17

初识ASP.NET---一般处理程序的相关文章

[MVC4]初识ASP.NET MVC4

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

asp.net一般处理程序(.ashx)动态生成验证码案例。

{使用一般处理程序动态生成验证码} 1.新建WebSite项目,添加一般处理程序命名为  yzm.ashx,添加如下代码: public void ProcessRequest(HttpContext context)    {   //将context.Response.ContentType = "text/plain";修改为context.Response.ContentType = "image/JPEG";        context.Response

asp .net 一般处理程序

asp.net:一般处理程序.ashx效率比较高效,WebForm(aspx)比较消耗资源,MVC(效率刚好介于两者之间)asp.net里常用的文件.ashx 一般处理程序HttpHandler,asp.net核心程序,但一般使用.aspx(常用于不需要返回大量html代码的时候).aspx 常用程序webForm,用于创建网页和网页进行编程的核心文件(前台文件)(要返回大量html).aspx.cs 用于编写大量的C#业务代码和.aspx配套使用.ascx  指明一个 asp.net 用户定义

初识ASP.NET---点滴的积累---ASP.NET学习小结

差不多十多天前学习完了北大青鸟的学习视频,没想到没几天的时间就看完了XML视频和牛腩的Javascript视频.学习完了也该总结总结,理理自己的思路,消化一下自己学习到的东西. 视频中的理论知识并不是很多,以例子驱动学起来也不会他过于乏味.全部的学习内容大概的可以用下图表示. 个人感觉这套视频的体系感不是很强,每一集之间老师的串联并不是做得很好,向我等没有教材的有些小的知识无从知晓.但是不能不说这套视频确很适合初学者学习,老师讲解的也不错,从此我也算是入门. 当然要想进一步的了解ASP.NET并

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

问题来源: 今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现无论怎么和源码对照都无法显示想要的功能.这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我可以利用ASP.NET的一般处理程序. 我果然是菜鸟初学者,因为我还没有接触过一般处理程序! 什么是一般处理程序: 一般处理程序:是一个实现System.Web.IHttpHandler接口的特殊类.任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提.(凡是没有实现此接口的类,就不能被

ASP.NET -- 一般处理程序ashx

ASP.NET  --   一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或aspx.vb文件. 入门案例:html页面向ashx页面请求数据,ashx作为后台页面返回数据. 前端html页面: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co

不拖控件ASP.NET——一般处理程序

    习惯了微软提供的一系列Web控件,用着很方便,最近看了一种新的方式不用拖控件就能实现同样的功能,究竟拖控件好还是不拖控件好,随着以后学习的深入,答案会慢慢揭晓,希望一直关注哦!今天我们来看看一般处理程序. 1.      一般处理程序(HttpHandler) ?  引入     我们从一个网站打开的流程讲起.如下图:     流程细说:用webForm开发一个模拟的登陆页面,用户打开登陆页面,填入相应的用户信息:用户名和密码,点击[登陆]按钮,浏览器将用户名和密码发送给网站服务器,网站

ASP.NET 一般处理程序显示用户信息列表功能的实现

HTML模版页面UserList.htm <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <title>&

初识ASP.NET 5中的Sake与KoreBuild

从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令: build.cmd是针对Windows的编译命令,build.sh是针对Mac/Linux的编译命令,这本来没什么稀奇,但是打开这2个文件一看: build.cmd: packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %* build.sh: mono packages/Sake/tools/Sake.e