初识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
初识ASP.NET---一般处理程序的更多相关文章
- .net core系列之初识asp.net core
.net core已经发布了2.0版本,相对于1.0的有了很大的完善,最近准备在项目中尝试使用asp.net core,所以就进行了一些简单的研究. 初识asp.net core分为以下几个部分: 1 ...
- ASP.NET -- 一般处理程序ashx
ASP.NET -- 一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或 ...
- asp.net中处理程序调用HttpContext.Current.Session获取值出错
asp.net中处理程序调用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例. 解决办法:在处理程序文件类中实现I ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- 初识ASP.NET 5中的Sake与KoreBuild
从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令: build.cmd是针对Windows的编译命令,build.sh是针对Mac/Linux的编译命令,这本 ...
- 初识 Asp.Net内置对象之Server对象
Server对象 Server对象定义了一个于Web服务器相关联的类提供对服务器上的方法和属性的访问,用于访问服务器上的资源. Server对象的常用属性 属性 MarhineName 获取服务器 ...
- asp.net一般处理程序利用反射定位方法
asp.net的一般处理程序我想大家用得都不少,经常会如下如下的代码: using System; using System.Collections.Generic; using System.Lin ...
- asp.net 一般处理程序接收上传文件的问题
在使用Html+ashx处理文件上传时,遇到上传文件超过4M的问题,首先HTML代码如下: <!DOCTYPE html> <html> <head> <me ...
- asp.net ashx处理程序中switch case的替代方案总结
目录 1.用委托字典代替switch...case; 2.利用反射替代switch...case: 3.比较两种方案 4.其他方案 4.说明 5.参考 在开发 asp.net 项目中,通常使用一般处理 ...
随机推荐
- 【BZOJ2762】[JLOI2011]不等式组(树状数组)
题目: BZOJ2762 分析: 加入的不等式分三种情况 当\(a>0\),可以变成\(x>\lfloor \frac{c-b}{a}\rfloor\) 当\(a=0\),若\(b> ...
- 【BZOJ2565】最长双回文串 (Manacher算法)
题目: BZOJ2565 分析: 首先看到回文串,肯定能想到Manacher算法.下文中字符串\(s\)是输入的字符串\(str\)在Manacher算法中添加了字符'#'后的字符串 (构造方式如下) ...
- 关于DOM操作的相关案例
1.模态框案例 需求: 打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 代码如下: <!DOCTYPE html> <h ...
- ACM_3n+1问题(克拉兹问题+线段树区间查询最大值)
3n+1问题 Time Limit: 2000/1000ms (Java/Others) Problem Description: 考虑如下的序列生成算法:从整数n开始,如果n是偶数,把它除以2:如果 ...
- Linux添加用户组和删除用户组
1.添加用户组使用groupadd命令添加用户组:groupadd group_name此操作需由系统管理员进行.2.删除用户组使用groupdel命令删除用户组:groupdel group_nam ...
- java中使用String的replace方法替换html模板保存文件
在我们的D盘下有这样一个html模板,现在我们要做的就是解析news.template文件,从数据库中提取数据将数据添加到指定的模板位置上 <head> <title>{tit ...
- 实现div毛玻璃背景
毛玻璃效果 ios里毛玻璃效果的使用非常多,本文介绍一个实现div毛玻璃背景的方法 CSS3 Filter CSS3的Filter主要用在图像的特效处理上,默认值为none,还有以下备选项: 1. ...
- Codeforces_738B
B. Spotlights time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- block要用copy修饰,还是用strong
栈区与堆区 block本身是像对象一样可以retain,和release.但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上.他本身的作于域是属于创建时候的作用 ...
- ie9以下提示用户升级浏览器
<!--[if lt IE 9]> <div style='border: 4px solid #FFF500; background: #FDFDC8; text-align: c ...