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 用户定义控件
.asax  包含asp.net 应用程序级事件的事件语法
.config 配置文件,用于设置应用程序的各种属性
.asmx  供宿主web服务在本地货远程使用

一,一般处理程序处理过程(HttpHandler)
IIS处理不了这种后缀程序通过映射表将该程序传递给ASPNET_ISAPI.DLL的程序,然后又将请求转给了网站程序
网站程序调用HttpRuntime类的静态方法处理请求,有以下步骤:
1,实现System.Web.IHttpHandle特殊接口的类
实现了该接口的类都能作为一个外部请求的目标程序
2,创建 HttpContext context 数据上下文对象,用于处理请求的所以参数数据.
(主要是httpRequest-->用于Form表单数据url 参数 和httpResponse()主要包含了FileStream对象用于保存输出的数据)
3,分析请求报文,并将数据封装到HttpWorkerRequest对象对应的属性
并调用HttpApplicationFactory的类中的静态方法来创建HttpApplication对象
(实际上是先通过httpApplication池 看有没有空闲的  没有才创建),那么
该对象会处理此次请求的所有运行过程
4,httpContex对象传入到httpApplication的时候就可以调用页面类中的ProcessRequest方法

二,服务器请求数据和接收数据
在一般处理程序中,通过HttpContext context 调用系统数据对象(属性)
Page 指向页面自身的方式
Request 读取客户端的Web请求期间发送的值
Response 封装了页面执行期返回到HTTP客户端的输出
Application 作用于整个程序运行期的状态对象
Session 会话期状态保持对象,用于跟踪单一用户的会话
Cookie 客户端保持会话信息的一种方式
Server 提更对服务器上的方法和属性的访问

1,两种简单的数据请求和接收方式
(post是通过数据报文传递的(socket),get是通过url 所以有限制大小)
1.1 通过表单传值form 可以通过post 和get 方式将数据传递给相应的页面
post方式的接收:context.Request.Form["textName"]
get 方式的接收:string name = context.Request.QueryString["name"]
1.2 通过超链接  <a href=‘SimpleLogin.ashx?name=hello‘>test url get</a>
Request:有QueryString  Form Params 属性Params是客户提交的数据集合(可以用于post和get)

三,重定向的原理
context.Response.Redirect("hello.html"); 
Response:有write(输出) redirect(重定向) end(结束输出)

四,将数据显示到模板页
获取到模板内容
 string modelPath = context.Server.MapPath("loginmodel.html"); 
 string htmlSendBack = System.IO.File.ReadAllText(modelPath);
将内容中的标识号替换成对应的数据变量

五,用一般程序写一个登陆模块
SimpleLogin.ashx
//============================代码=========
    public void ProcessRequest (HttpContext context) {
        //找到对应的页面
        string modelPath = context.Server.MapPath("loginmodel.html"); 
        //将页面中的内容读取出来
        string htmlSendBack = System.IO.File.ReadAllText(modelPath);
        //表示输出html
        context.Response.ContentType = "text/html";
        //将数据传递给模板页
        string num = "linzhouzhi";
        htmlSendBack = htmlSendBack.Replace("{num}",num);
        //向浏览器输出
        context.Response.Write(htmlSendBack);
        //超链接传值方式
        context.Response.Write("<a href=‘SimpleLogin.ashx?name=hello‘>test url get</a>");
        //get方式接收数据
        string name = context.Request.QueryString["name"];
        context.Response.Write(name);
        
        if (!string.IsNullOrEmpty(context.Request.Form["textName"])) {
            if (context.Request.Form["textName"] == "linzhouzhi" && context.Request.Form["textPwd"] == "111")
            {
                context.Response.Write("okokok!!");
                //结束输出
                context.Response.End();
                context.Response.Write("HelloWord");
                
            }
            else {
                //重定向
                context.Response.Redirect("hello.html");   
            }
        }
    }
//=============loginmodel.html================
<body>
    <form action="SimpleLogin.ashx" method="post">
        <input type="text" name="textName" value="{num}" />
        <input type="text" name="textPwd" />
        <input type="submit" value="登陆" />
    </form>
</body>

时间: 2024-12-23 07:50:50

asp .net 一般处理程序的相关文章

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---一般处理程序

问题来源: 今天在敲一个小的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---一般处理程序

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

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 一般处理程序小优化

使用asp.net mvc习惯了,最近项目中又开始使用asp.net,有大量的ajax方法调用,之前有两种方法来处理: Switch case :方法少还行,如果很多,就太蛋疼了,而且方法堆在一块,也不美观 匿名方法:方法复用不好,vs代码也不便于折叠 最近研究了一下用反射方法来做,把类中所有公开方法都通过反射找出存到字典中,调用时匹配字典中的key,看是否有此方法. 以下是我写的方法,这种方法我总结有以下优点: 不用大量写大量判断语句,简洁 方法可以复用 可以集中处理一些事情,如调用前监控,处

asp.net一般处理程序

asp.net 传参 get 1通过手动修改url里面的路径 2通过超链接传递参数 <a href=".ashx?id=2&name=bya">通过超链接传递参数</a> 3通过浏览器端js代码来传递参数 <input type="button" value="通过js代码传递参数"> onclick=go()/> 4通过form表单的get请求来传递参数(form表单提交参数不能直接将参数放在u

ASP.NET自定义处理程序

要创建自定义处理程序,可以创建一个实现IHttpHandler接口的类. 该类有两个重要的参数:IsResuable属性和ProcessRequest方法.如果处理程序实例可以在不同的请求中重用,IsResuable就返回true.ProcessRequest方法接收带参数的HttpContext.HttpContext允许接收来自调用者的请求信息,并发回一个响应. 下面的实例主要是客户端请求url:http://localhost:9287/CallCustomHandler 然后调用处理程序