aspx,ascx和ashx使用小結(jié)
當(dāng)前位置:點(diǎn)晴教程→知識管理交流
→『 技術(shù)文檔交流 』
做asp.net開發(fā)的對.aspx,.ascx和.ashx都不會(huì)陌生。關(guān)于它們,網(wǎng)上有很多文章介紹。“紙上得來終覺淺,絕知此事要躬行”,下面自己總結(jié)一下做個(gè)筆記。 Code using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.SessionState; namespace Test { public class HandlerTest : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Response.ClearContent(); context.Response.ContentType = "text/plain"; context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //無緩存 string action = context.Request.Params["action"]; //外部請求 if (action == "modifyPwd") //用戶改密碼 { string oldPwd = context.Request.Params["pwd"]; //在ashx文件用使用Session必須實(shí)現(xiàn)IRequiresSessionState接口 //Session["LogedUser"]是登錄用戶的會(huì)話,用戶名和密碼都是test if (oldPwd.ToUpper() != ((context.Session["LogedUser"]) as Customer).Password.ToUpper()) //用戶輸入的舊密碼和當(dāng)前登錄用戶的不相同 { context.Response.Write("舊密碼輸入錯(cuò)誤!"); } else { context.Response.Write("舊密碼輸入正確!"); } } context.Response.End(); } public bool IsReusable { get { return true; } } } } 客戶端的調(diào)用(js和頁面部分): Code <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ASHXTest.aspx.cs" Inherits="ASHXTest" %> <!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 runat="server"> <title>mytest</title> <script type="text/javascript"> function $(s) { if (document.getElementById) { return eval('document.getElementById("' + s + '")'); } else { return eval('document.all.' + s); } } function createXMLHTTP() { var xmlHttp = false; var arrSignatures = ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; for (var i = 0; i < arrSignatures.length; i++) { try { xmlHttp = new ActiveXObject(arrSignatures[i]); return xmlHttp; } catch (oError) { xmlHttp = false; //ignore } } // throw new Error("MSXML is not installed on your system."); if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest(); } return xmlHttp; } var xmlReq = createXMLHTTP(); // 發(fā)送ajax處理請求(這里簡單驗(yàn)證舊密碼的有效性) function validateOldPwd(oTxt) { var url = "/HandlerTest.ashx?action=modifyPwd&pwd=" + escape(oTxt.value); //.ashx文件 xmlReq.open("get", url, true); xmlReq.setRequestHeader("If-Modified-Since", "0"); xmlReq.onreadystatechange = callBack; xmlReq.send(url); // 發(fā)送文本 } function callBack() { if (xmlReq.readyState == 4) { if (xmlReq.status == 200) { alert(xmlReq.responseText); // 接收文本 } else if (xmlReq.status == 404) { alert("Requested URL is not found."); } else if (xmlReq.status == 403) { alert("Access denied."); } else alert("status is " + xmlReq.status); } } </script> </head> <body> <form id="form1" runat="server"> <div> <input id="txtOldPwd" type="text" onblur="validateOldPwd(this)" /> </div> </form> </body> </html> 分析: a、以前我們通常都是通過一個(gè)簡單的aspx文件實(shí)現(xiàn)的功能,其實(shí)通過ashx也可以。 當(dāng)瀏覽器訪問web服務(wù)器,我們最終接收到的還是html文本。瀏覽器通過渲染引擎解釋這些標(biāo)簽,在屏幕上展現(xiàn)出可見的效果。而asp.net不過就是我們應(yīng)用的一種平臺技術(shù)來"變相"解釋html的,說白了它就是為了提高生產(chǎn)率,它的技術(shù)術(shù)語再多,本質(zhì)上還是html范疇內(nèi)的東西(如果你不通過那些動(dòng)態(tài)頁面技術(shù)完全利用html和瀏覽器(當(dāng)然包括js)技術(shù)來實(shí)現(xiàn)動(dòng)態(tài)頁面效果,那么你會(huì)發(fā)現(xiàn)效果有了代碼量也相當(dāng)可觀).所以說web開發(fā)的底層就是一堆的html標(biāo)簽,無論是asp.net還是jsp都是對html某種方式的包裝,是html的產(chǎn)物。 轉(zhuǎn)自https://www.cnblogs.com/lgx5/p/5629028.html 該文章在 2025/7/1 16:25:18 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |