asp.net 一般處理程序
07-26
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>
推薦閱讀:
推薦閱讀:
※初學c語言,如何將寫好的程序優化帶有簡單的圖形界面?
※從零開始寫個編譯器吧 - tao 語言的文法定義(上)
※如何寫爬蟲程序爬取豆瓣網或者新浪微博里的內容?
※c/c++能做什麼?