• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      ashx一般處理程序在ASP.NET Ajax中的應(yīng)用

      2020-08-06 00:58:48
      關(guān)鍵詞:處理程序用戶名服務(wù)器端

      馮 菁

      (淮北職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,安徽 淮北 235000)

      0 引言

      ashx一般處理程序,可用它來(lái)處理Ajax請(qǐng)求,通過(guò)繼承HttpHandler類(或是實(shí)現(xiàn)IHttpHandler接口),從而免去了普通aspx頁(yè)面控件解析以及頁(yè)面處理的過(guò)程。[1]NET Framework在默認(rèn)情況下,把a(bǔ)spx WEB頁(yè)面的Request請(qǐng)求交給HttpHandlerFactory來(lái)處理的,當(dāng)頁(yè)面的一個(gè)HTTP請(qǐng)求到達(dá)時(shí),HttpHandlerFactory會(huì)提供出一個(gè)HttpHandler容器,HTTP請(qǐng)求最終交給HttpHandler容器中的ProcessRequest方法來(lái)處理的。Ajax是Asynchronous JavaScript and XML的縮寫,即異步JavaScript和XML技術(shù)。[2]通過(guò)該技術(shù)的使用,實(shí)現(xiàn)了頁(yè)面的局部刷新,減小了網(wǎng)絡(luò)流量,改善用戶體驗(yàn),提升了系統(tǒng)的運(yùn)行速度。在ASP.NET中結(jié)合使用JQuery+ashx一般處理程序,實(shí)現(xiàn)Ajax技術(shù)。

      1 ASP.NET Ajax架構(gòu)

      ASP.NET Ajax使得Ajax程序設(shè)計(jì)變得簡(jiǎn)單,使用ASP.NET中的Ajax可快速創(chuàng)建包含具有快速響應(yīng)能力且熟悉的用戶界面元素的網(wǎng)頁(yè),豐富了用戶的體驗(yàn)。[2]ASP.NET Ajax中的JavaScript是跨平臺(tái)的,支持多個(gè)瀏覽器,不會(huì)因PostBack而讓整個(gè)頁(yè)面重新加載造成閃動(dòng),可以實(shí)現(xiàn)Web頁(yè)面局部更新,異步取回服務(wù)器端的數(shù)據(jù),用戶無(wú)需等待也不被打斷,提升頁(yè)面響應(yīng)能力。

      1.1 ASP.NET Ajax組成

      ASP.NET Ajax主要有四個(gè)部分,Ajax服務(wù)器端控件、Ajax服務(wù)器端擴(kuò)展控件、Ajax服務(wù)器端遠(yuǎn)程Web Service橋、Ajax客戶端代理。[3]ASP.NET從4.0版開(kāi)始,完全集成了Ajax框架,在Visual Studio 2010及以上版本中工具箱里就可以找到Ajax控件.ASP.NET Ajax客戶端架構(gòu)主要有API、API函數(shù)、基礎(chǔ)類庫(kù)、封裝的XMLHttpRequest對(duì)象、Ajax XML引擎、ASP.NET Ajax客戶端控件等。[3]

      在Ajax應(yīng)用中,Ajax引擎相當(dāng)于中間通訊層,Web頁(yè)面HTTP請(qǐng)求通過(guò)Ajax引擎與服務(wù)器端進(jìn)行通信,響應(yīng)返回的結(jié)果提交給Ajax引擎,再由Ajax引擎來(lái)決定將這些數(shù)據(jù)顯示到頁(yè)面的指定位置.在Ajax中,變成對(duì)Ajax引擎的一次調(diào)用.只對(duì)部分頁(yè)面進(jìn)行更新。[3]

      Ajax Web頁(yè)面的工作過(guò)程如圖1所示:

      圖1 Ajax工作過(guò)程

      2 ashx一般處理程序

      一般處理程序HttpHandler是一種.NET WEB組件,擴(kuò)展名為.ashx 文件,采用它來(lái)處理Ajax請(qǐng)求,當(dāng)文件需要?jiǎng)討B(tài)返回來(lái)自查詢字符串或XML和其它非HTML網(wǎng)頁(yè)的圖像時(shí)。采用JQuery和.NET技術(shù),ashx頁(yè)面接收參數(shù),然后返回值.瀏覽頁(yè)面時(shí)是無(wú)法看到編寫的源代碼的.a(chǎn)shx文件在.NET中要繼承IHttpHandler接口,該接口里有IsReusable成員,指定IHttpHandler實(shí)例是否可以用來(lái)處理多個(gè)請(qǐng)求、方法ProcessRequest(HttpContext context)處理接受到的Http請(qǐng)求。

      3 Ajax+ashx實(shí)現(xiàn)頁(yè)面異步加載

      各類WEB應(yīng)用中都有數(shù)據(jù)庫(kù)的訪問(wèn)操作,注冊(cè)是一個(gè)常用的功能。應(yīng)用Ajax設(shè)計(jì)ASP.NET Web注冊(cè)頁(yè)面,Ajax無(wú)刷新感檢測(cè)用戶名。測(cè)試用戶名是否重名,只刷新部分頁(yè)面。

      具體設(shè)計(jì)思路如下:

      (1)需要一個(gè)一般處理程序.ashx,傳入用戶名進(jìn)行檢索,設(shè)計(jì)Select語(yǔ)句,如果用戶名已使用或未使用返回一個(gè)不同值的標(biāo)識(shí)變量。

      (2)使用JQuery的ajax,這里使用JQuery.get()方式,請(qǐng)求剛才的ashx文件,并將用戶名作為參數(shù)傳過(guò)去,get()是Request.QueryString接收,Ajax過(guò)程完成之后會(huì)返回標(biāo)識(shí)變量,再根據(jù)此標(biāo)識(shí)確定是否可以使用新填寫的注冊(cè)用戶名。

      3.1 注冊(cè)界面

      注冊(cè)界面設(shè)計(jì)如圖2所示:需在網(wǎng)站主目錄中添加JQuery插件jquery-1.4.1-vsdoc.js, 在頁(yè)面加上JQuery插件.

      圖2 注冊(cè)頁(yè)面界面

      3.2 一般處理程序isName.ashx

      使用.ashx文件(一般處理程序)實(shí)現(xiàn)IHTTPHandler接口,不像aspx要繼承Page類,處理控件和事件等, HttpHandler是HTTP請(qǐng)求的真正處理中心,直接用于處理客戶端發(fā)送來(lái)的請(qǐng)求,并將服務(wù)器端的處理結(jié)果返回給客戶端.a(chǎn)shx文件的具體處理過(guò)程要比aspx要簡(jiǎn)單得多。

      繼承IHttpHandler接口,重寫ProcessRequest方法(),并添加數(shù)據(jù)庫(kù)里查找指定用戶名的方法IsNName().

      關(guān)鍵代碼如下:public void ProcessRequest (HttpContext context) {

      定義字符串變量resp;

      string strName = context.Request.QueryString["userName"];

      if (IsNName(strName))

      {字符串resp變量值為”1”或”0”}

      輸出數(shù)據(jù)(resp);

      ……

      }

      private bool IsNName(string strName)

      {

      bool boolName;

      連接數(shù)據(jù)庫(kù);

      查找用戶表是否有strName這條記錄;

      查找結(jié)果放入boolName真假值;

      3.3 JQuery使用

      在注冊(cè)Web頁(yè)面中,用戶名文本框失去焦點(diǎn)事件CheckUsername(),HTML+JavaScript用$.ajax(url)這個(gè)函數(shù)發(fā)送數(shù)據(jù)到ashx文件,此文件用Request.QueryString[...]接收數(shù)據(jù)。

      關(guān)鍵代碼如下:

      function CheckUsername() {

      strName獲取文本框的值;

      flag開(kāi)關(guān);

      $.ajax({

      ……

      url: "../ajax/IsName.ashx?userName=" + encodeURI(strName),

      success: function(msg) {

      {根據(jù)返回信息,給出用戶名是否可用,并設(shè)置開(kāi)關(guān)flag}

      返回flag

      }

      3.4 運(yùn)行效果

      頁(yè)面即時(shí)出現(xiàn)提示用戶名是否可用,用戶無(wú)刷新抖動(dòng)的感覺(jué)。

      圖3 用戶名檢測(cè)即時(shí)效果

      4 其它技術(shù)實(shí)現(xiàn)Ajax.

      在ASP.NET中實(shí)現(xiàn)Ajax,可根據(jù)個(gè)人習(xí)慣使用JavaScript、jquery插件,還可以選擇.NET自己封裝的Ajax控件,方法各有特點(diǎn)。

      使用Ajax擴(kuò)展EXT 控件,優(yōu)勢(shì)在于支持UI,需安裝AjaxControlToolkit,或是需要添加引用System.Web.Extensions.dll。在建Ajax頁(yè)面時(shí)一定先添加ScriptManager控件, 執(zhí)行Ajax JavaScript庫(kù)的鏈接,才能讓Page局部更新起作用。[3]再添加UpdatePanel控件,并在其ContentTemplate內(nèi)容模板添加內(nèi)置控件、表格、HTML代碼等.這樣可以使用很少的客戶端腳本或不使用客戶端腳本就能創(chuàng)建豐富的客戶端行為,局部更新可避免整頁(yè)回發(fā)的開(kāi)銷。需要在Web.Config的元素中添加或修改元素。

      NET Framework 4.0之前版本中使用ASP.NET Ajax ,需要在ScriptManager控件所在頁(yè)面,通過(guò)腳本調(diào)用Web 服務(wù),要指明Web服務(wù)所在的文件地址,[4]擴(kuò)展名為asmx Web Service文件,WebServices+JQuery可實(shí)現(xiàn)Ajax頁(yè)面部分刷新;在.NET Framework 4.0以后版本Ajax中調(diào)用WCF服務(wù)。

      5 總結(jié)

      通過(guò)ashx來(lái)調(diào)用HttpHandler類,HttpHandler是一個(gè)徹底自定義Http請(qǐng)求方法,ashx少了處理了html的過(guò)程。免去了普通.aspx頁(yè)面的控件解析以及頁(yè)面處理的過(guò)程,直接返回Web http請(qǐng)求想要返回的結(jié)果,速度快.a(chǎn)shx文件適合產(chǎn)生供瀏覽器處理的、不需要回發(fā)處理的數(shù)據(jù)格式,例如生成動(dòng)態(tài)圖片、動(dòng)態(tài)文本等內(nèi)容。

      .ashx文件也有缺點(diǎn),它處理控件的回發(fā)事件非常麻煩,需自己手動(dòng)完成;并且它只能處理一個(gè)請(qǐng)求,如有多個(gè)請(qǐng)求需寫對(duì)應(yīng)的多個(gè)ashx文件。

      猜你喜歡
      處理程序用戶名服務(wù)器端
      《護(hù)士進(jìn)修雜志》投稿程序
      高速公路工程變更與計(jì)量支付處理程序的優(yōu)化方法
      淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
      成功(2018年10期)2018-03-26 02:56:14
      機(jī)智的快遞員
      基于C++的數(shù)控加工通用后處理程序的開(kāi)發(fā)應(yīng)用研究
      企業(yè)危機(jī)公關(guān)管理問(wèn)題分析
      在Windows中安裝OpenVPN
      地鐵直流系統(tǒng)中框架保護(hù)原理及處理程序
      網(wǎng)頁(yè)防篡改中分布式文件同步復(fù)制系統(tǒng)
      基于Struts的Web應(yīng)用系統(tǒng)數(shù)據(jù)驗(yàn)證
      苍溪县| 武功县| 河间市| 安平县| 汕头市| 安乡县| 定襄县| 海口市| SHOW| 沙坪坝区| 榆社县| 鄂伦春自治旗| 天气| 出国| 日喀则市| 射阳县| 赣榆县| 博罗县| 黔西县| 临澧县| 白沙| 云南省| 大足县| 连平县| 福建省| 德钦县| 广宗县| 万年县| 石楼县| 邵东县| 壶关县| 秦安县| 南召县| 麻城市| 铜鼓县| 林州市| 鹤庆县| 福贡县| 绥滨县| 潼关县| 廊坊市|