zoukankan      html  css  js  c++  java
  • ASP 一般处理程序知识点

    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("+++++++++okokok!!");
                    
                }
                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>

  • 相关阅读:
    2015第18周日
    CreateProcess的使用方法
    A ResourcePool could not acquire a resource from its primary factory or source
    ThreadPool.QueueUserWorkItem的性能问题
    Cucumber 入门一
    菜鸟版JAVA设计模式-从抽象与实现说桥接模式
    ServiceStack.Hello——跨平台.net REST api服务搭建
    android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
    深入探讨this指针
    问卷星调查学生对《算法》教学的建议与反馈
  • 原文地址:https://www.cnblogs.com/zhenghaichao/p/4619137.html
Copyright © 2011-2022 走看看