欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

基于AJAX技術實現Struts校驗框架_AJAX教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:使用 JavaScript 和 Ajax 發出異步請求
多數 Web 應用程序都使用請求/響應模型從服務器上獲得完整的 HTML 頁面。常常是點擊一個按鈕,等待服務器響應,再點擊另一個按鈕,然后再等待,這樣一個反復的過程。有了 Ajax 和 XMLHttpRequest 對象,就可以使用不必讓用戶等待服務器響應的請求/響應模型了

提要 實時的數據校驗是AJAX技術的重要優點之一,Struts校驗框架通過加入這種技術進一步豐富了其MVC,從而使得Web應用程序的開發效果更接近于桌面應用程序。

  一、 引言

  校驗框架的根本目的是實現域校驗。在Web應用程序中有許多方法可以實現域校驗,總體上可以分為兩類:服務器端和客戶端。其中,Struts校驗框架是適合于基于Java的Web應用程序環境最好的框架之一。它可以使用服務器端校驗來配置應用程序并且使用在校驗過程(在請求處理期間激活)中生成的錯誤消息;而且它也可以通過在請求頁面上生成的JavaScript來實現客戶端校驗。

  AJAX是一種能異步地調用服務器并返回XML文檔的技術,近來十分流行。它的重要優點之一是能夠實現數據的實時校驗。

  本文將主要探討如何使用AJAX技術進一步增強現有Struts校驗框架的功能。為此,我們必須開發幾個組件來實現選擇校驗框架并且為客戶端生成指定格式的消息,還要開發一個處理錯誤消息生成的標簽庫。

  二、 前提

  你需要使用Windows操作系統,并安裝Eclipse集成開發環境和Tomcat應用程序服務器,還要確保在你的操作系統上已經注冊了MSXML 3.0 ActiveX對象。另外,你還需要Struts庫(http://struts.apache.org)和JDOM庫(www.jdom.org,用于XML開發),請分別參考下面的圖1和圖2。


圖1.AjaxForm類層次圖


圖2.ErrormessageHandler類層次圖

  三、 服務器端

  StrustsActionServlet

  首先,我們必須用這個類擴展org.apache.struts.action.ActionServlet類以創建一個servletMapping變量,并用此變量來存儲有關瀏覽器地址的action路徑的信息。當添加代碼時,我們必須把web.xml配置為一個用于應用程序服務器的Web應用程序描述器。

  web.xml的配置如下:

...
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>net.sf.struts.servlet.StrutsActionServlet</servlet-class>
...
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
...

  相應的StrutsActionServlet代碼看上去具有如下形式:

public class StrutsActionServlet extends the ActionServlet.
{
public String getServletMapping() {
return this.servletMapping;
}
}

  AjaxValidationRequestProcessor

  為了支持現有的Struts框架,我們必須擴展Struts包中的RequestProcessor類。為此,我們必須定制請求處理器,其一是因為我們必須區分怎樣實現校驗-使用現有的Struts框架還是使用基于AJAX的方案;其二是因為我們將在服務器和客戶端之間在有關如何攔截消息方面簽訂一種協約。在消息生成過程中,我們使用的是XML格式-這是一種很好的媒體消息發送格式。我們所使用的XML格式的定義如下:

  XML Format

<?xml version="1.0" encoding="UTF-8"?>
<message>
<identity name=messageAreaId>
<description>
MessageValue
</description>
</identity>
</message>

  描述

  · Identity是客戶端JavaScript的ID,用于指明消息應該放置的位置。

  · Description是服務器端生成錯誤消息以后的結果。

  首先,在處理映射前,我們需要從Web描述符中得到servlet映射配置信息。激活該過程后,應用程序就著手準備繼承自AjaxForm類的表單實例。接下來的處理將管理AJAX校驗并且應該進行檢查以確保來自客戶端的請求沒有使用Struts校驗框架。在請求期間另外要實現,其一是處理收集的由客戶端發送到action表單的信息的填充問題;其二是通過使用已經存在于父類AjaxValidationRequestProcessor(TilesRequestProcessor)中的現有Struts校驗框架中的方法來處理校驗問題。

  TilesRequestProcessor中的校驗過程將調用所有基于Struts校驗框架的校驗并且把action錯誤保存到請求中。我們需要把action錯誤分析成片斷并生成將被發送到客戶端的XML消息校驗。既然我們想改變校驗方式,那么在校驗過程中,我們應該檢查我們使用的是哪一種校驗框架(見圖3)。


圖3.控制器處理流程

  在此,我們把JDOM作為處理引擎并使用它生成XML消息。如圖4所示,當開始校驗并且所用校驗框架是AJAX校驗框架時,接下來要進行填充錯誤消息并且構建XML消息校驗。


圖4.過濾和XML校驗生成過程

  ErrorMessageHandler

  這個類具有XML消息構建器的功能,它基于identity和description屬性來構建XML消息。在調用buildXMLMessage后,調用者就會準備文檔并設置XML消息的根元素。這個類還有一個addNextXMLMessage函數,這個函數負責把其它校驗消息添加進XML(見源代碼中的列表1)。
AjaxValidationRequestProcessor類中的process方法負責把響應的content type設置為"text/xml"并且以字符串形式發送XML消息。該方法的代碼如列表2(見所附源碼)所示。

  AjaxValidationRequestProcessor類中的processValidation方法負責填充action錯誤并且基于XML格式約定為客戶端構建消息。此函數的代碼如下所示:

...
ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);
Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);
generateXMLMessage(errors, identity, locale, sbXMLMessage);
...
  四、 客戶端

  構建Taglib組件

  · AjaxJavaScriptLibraryTag:該taglib組件負責生成客戶端基本的XMLHTTP控制器函數的JavaScript函數部分。

  · AjaxErrorHtmlRenderTag:該taglib組件負責在JSP頁面上生成顯示錯誤消息的區域。

  配置Taglib定義

  在開發完taglib組件后,我們需要使用如列表3(見所附源碼)的方式來配置taglib的tld文件。

  五、 構建JSP和Struts配置

  為了模仿校驗處理的結果,我們首先需要構建描述層-這可以通過加入我們已經構建的taglib來實現。在本文實例中,我將盡力使用Struts提供的校驗規則組件和表單本身的校驗功能來給出一個校驗的實例。現在,我們在JSP頁面中準備5個文本框。第一到第四個文本框使用校驗規則配置,第5個文本框使用來自action表單的校驗過程。此外,我們還需要一個提交按鈕來實現提交表單后對此的模仿。注意,至此,現有的Struts校驗仍然沒有使用AJAX。用戶接口如圖5所示。


圖5.JSP校驗頁面

  六、 構建Action和Action表單

  對于Struts action,我們只需把它轉發到我們已經構建的JSP即可,相應的action代碼具有如下類似形式:

public ActionForward execute(...) {
return mapping.findForward("success");
}

  如果輸入為空,那么Action表單代碼就對requiredText屬性進行校驗。記住,要從AjaxForm類中派生此表單類。此Action表單的validate方法看上去如下:

public ActionErrors validate(...) {
ActionErrors errors = new ActionErrors();
if (StringUtils.isEmpty(this.requiredText)) {
errors.add("requiredText", new ActionError("error.required.input"));
}
request.setAttribute(Globals.ERROR_KEY, errors);
}

  七、 應用Struts校驗規則

  接下來要配置Struts校驗規則,例如最小長度,最大長度,電子郵件和模式文本,等等。然后,把這些數據應用于客戶端的輸入對象。這一部分相應的配置類見列表4(詳見所附源碼)。

  八、 校驗處理流程

  首先,客戶端初始化XMLHTTP組件以實現對服務器的請求。然后,一旦開始構建用戶激活的事件,URL的參數就被發送給服務器。在結束構建參數后,客戶端將依附oneadystatechange XMLHTTP事件來聽取(listen)來自服務器端的響應。在接收響應后,客戶端開始分析XML校驗消息并且把該消息存放到適當的地方(見圖6)。


圖6.客戶端處理流程

  當服務器接收請求時,它就開始檢查AJAX校驗的參數并且進行校驗。一旦完成校驗,生成的對象就被過濾到與用戶輸入對象相聯系的特定的錯誤中。在過濾操作完成后,即刻生成XML消息并把該消息發送回客戶端(見圖7)。


圖7.服務器端處理流程

  九、 總結

  在本文中,我們構建了一個控制器,它能夠接收來自客戶端的異步請求并且加入Struts校驗過程來生成action錯誤對象。在生成錯誤對象和XML消息(見圖8和圖9)之后,對于即將被校驗的特定輸入對象的過濾操作立即執行。


圖8.在Struts校驗框架內使用AJAX實現應用程序校驗測試


圖9.Struts校驗框架用例
 

分享:談Ajax 中的高級請求和響應
對于很多 Web 開發人員來說,只需要生成簡單的請求并接收簡單的響應即可;但是對于希望掌握 Ajax 的開發人員來說,必須要全面理解 HTTP 狀態代碼、就緒狀態和 XMLHttpRequest 對象。在本文中,Brett McLaughlin 將向您介紹各種狀態代碼,并展示瀏覽器如何對

來源:模板無憂//所屬分類:AJAX教程/更新時間:2010-04-19
相關AJAX教程
天堂av手机在线| 国产成人啪精品视频免费网| 轻点好疼好大好爽视频| 日韩美女一级片| 国产精品一区二区av交换| 国产日韩v精品一区二区| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲国产精品视频一区| 久久国产美女视频| 日韩av三区| 国产精品二三区| 国模精品一区二区三区色天香| 国产精品wwwww| 国产欧美久久久精品免费| 伊人成人网在线看| 欧日韩精品视频| 国产传媒一区二区| 欧洲美熟女乱又伦| 亚洲精品一区国产| 久久精品一区四区| 欧美激情性做爰免费视频| 毛片av免费在线观看| 国产男男gay体育生白袜| 国产乱码精品| 日韩一级二级三级| 性欧美.com| 午夜精品久久久久久久久久久久久蜜桃 | 亚洲综合区在线| 免费欧美在线视频| 97精品久久久午夜一区二区三区 | 亚洲一级片av| 欧美片第一页| 处破女av一区二区| yw.139尤物在线精品视频| 无码人妻丰满熟妇区96| 国产精品无码白浆高潮| 丝袜亚洲另类欧美综合| 欧美va亚洲va| 免费观看中文字幕| 中文字幕永久在线视频| 久久www成人_看片免费不卡| 精品国产乱码久久久久久牛牛| 亚洲一区二区在线看| 久久精品视频5| 夜夜嗨一区二区| 精品久久久久一区| 国产传媒久久久| 国产女人高潮时对白| 久久精品噜噜噜成人av农村| 亚洲性线免费观看视频成熟| 91视频最新入口| 男人天堂av网| 成人av网站在线| 久久久天堂国产精品女人| 麻豆tv在线观看| 麻豆精品在线| 又紧又大又爽精品一区二区| 成人在线精品视频| 精品一区二区在线观看视频| 青青草97国产精品麻豆| 欧美在线啊v一区| 日韩电影免费观看高清完整| 国产性生活视频| 日韩经典中文字幕一区| 亚洲图片欧洲图片av| 成人小视频在线看| 欧美成人精品一区二区男人小说| 久久奇米777| 国产精品成人免费视频| 超碰97av在线| 婷婷久久综合| 精品欧美乱码久久久久久1区2区| 女人被男人躁得好爽免费视频| 亚洲高清视频网站| 成人免费毛片片v| 992tv在线成人免费观看| 在线天堂www在线国语对白| 网红女主播少妇精品视频| 欧美日韩一区二区在线| 欧美日韩中文国产一区发布| 天天爱天天做天天爽| 精品在线亚洲视频| 欧美国产亚洲精品久久久8v| 国产国语老龄妇女a片| 泷泽萝拉在线播放| 五月天婷婷久久| 亚洲精选成人| 亚洲欧美日韩第一区| 日本熟妇人妻中出| www.欧美| 精品久久久中文| 亚洲国产精品久久久久婷婷老年| 99久久精品日本一区二区免费| 国产成人av影院| 7777精品视频| 一二三四在线观看视频| 国产在线欧美| 国产一区二区三区18| 亚洲制服中文字幕| 欧美日韩一本| 欧美日本一区二区三区四区| 日韩一级性生活片| 国产成人77亚洲精品www| 一区二区三区在线免费播放| 精品国产乱码久久久久久蜜柚| 中文字幕免费观看| 成人性视频免费网站| 国产国语videosex另类| 久久久久久久久久久网| 视频一区在线播放| 欧美激情aaaa| 一本一本久久a久久| 亚洲一级在线| 欧美xxxx做受欧美.88| 久久久久久九九九九九| 欧美日韩一区二区国产| 一区二区欧美日韩视频| yjizz视频| 羞羞答答成人影院www| 日韩精品在线观| 亚洲国产综合av| 教室别恋欧美无删减版| 精品国产凹凸成av人网站| 邪恶网站在线观看| 五月天亚洲色图| 欧美成人a∨高清免费观看| 91香蕉视频污版| 日韩精品免费一区二区夜夜嗨| 日韩一区二区三区免费看| 亚欧美在线观看| 深爱激情综合网| 亚洲国产欧美日韩精品| 欧洲在线免费视频| 欧美岛国激情| 国产亚洲精品美女| 久久亚洲AV成人无码国产野外| 亚洲视频免费| 久久成人av网站| 911国产在线| 久久精品国产久精国产| 欧美亚洲一区三区| 日韩视频免费在线观看| 国产精品无码永久免费不卡| 激情综合在线| 欧美激情啊啊啊| 久草国产在线观看| 国产酒店精品激情| 91在线视频成人| 国产精品无码天天爽视频| 亚洲国产精品传媒在线观看| 欧美自拍资源在线| 日韩精品影院| 欧美少妇一区二区| 亚洲一区二区三区四区五区xx| 亚洲激情播播| 亚洲女在线观看| 男生草女生视频| 日韩精品一区第一页| 日本高清视频精品| 久久久精品毛片| 亚洲国产激情av| 一本一本a久久| 国产成年精品| 精品国产乱码久久久久久久久 | 亚洲影影院av| 国产ts变态重口人妖hd| 亚洲精品网站在线观看| 国产成人亚洲综合无码| 高清精品视频| 精品五月天久久| 美国美女黄色片| 国产一区二区三区观看| 99视频免费观看| 日韩中文字幕观看| 色诱亚洲精品久久久久久| 亚洲 中文字幕 日韩 无码| 成人精品影视| 久久在线免费视频| 国产精品99无码一区二区| 91一区一区三区| 亚洲一区二区三区加勒比| 日韩欧美中文字幕一区二区三区| 亚洲白拍色综合图区| 欧美做受喷浆在线观看| 美国欧美日韩国产在线播放| 亚洲va欧美va国产综合久久| 亚洲av无码国产综合专区| 欧美日韩免费一区| 蜜桃免费在线视频| 欧美午夜免费影院| 日本一区二区三区四区视频| 一区二区三区精| 午夜国产不卡在线观看视频| 波多野结衣作品集| 欧美另类亚洲| 国产成人精品午夜| 精品国产乱码久久久久久蜜臀网站| 亚洲成人av在线电影| 在线观看的毛片| 很黄很黄激情成人| 国产精品久久一区| 蜜臀久久99精品久久久| 欧美三级视频在线播放| 国产av一区二区三区传媒| 日韩和的一区二区| dy888夜精品国产专区| 澳门av一区二区三区| 精品捆绑美女sm三区 | 欧美性猛交xxxx免费看| 精品少妇无遮挡毛片| 欧美网站在线| 国产精品一区二区久久精品| 日韩在线观看视频一区二区三区| 欧美系列日韩一区| 日本五十肥熟交尾| 激情五月婷婷综合| 奇米888一区二区三区| 一区二区日韩| 久久精品视频在线| 成人毛片在线播放| 亚洲国产一区在线观看| 国产成人黄色网址| 男人的天堂亚洲在线| av一区二区在线看| 91精品福利观看| 一本久久综合亚洲鲁鲁| 日韩手机在线观看| 亚洲精品一卡二卡| 久久久亚洲综合网站| 亚洲国产视频二区| 久久久电影免费观看完整版| 最近中文字幕在线观看| 色综合色狠狠天天综合色| 又大又长粗又爽又黄少妇视频| 久久99国产精品久久| 色婷婷精品国产一区二区三区| 亚洲精品**不卡在线播he| 久久久久久九九九| 亚洲成人77777| 欧美一区二区三区影视| 国产馆在线观看| 亚洲国产精品成人综合| 国产又大又黄又粗的视频| 久久精品中文| 欧美综合77777色婷婷| 亚洲精品亚洲人成在线观看| 91wwwcom在线观看| 天天操天天操天天操| 欧美精品一区二区三区很污很色的| 久草综合在线视频| 亚洲蜜臀av乱码久久精品蜜桃| 成人日韩在线视频| 精品一区二区三区久久久| 亚洲日本一区二区三区在线不卡| 青青草国产免费一区二区下载 | 欧美网站一区二区| av免费播放网站| 成人欧美一区二区三区视频网页 | 欧美专区日韩专区| 久久国产柳州莫菁门| 国产精品嫩草影院com| 激情视频免费网站| 国内外成人在线视频| 日本丰满大乳奶| 91久久午夜| 麻豆成人小视频| 欧美日韩国产传媒| 国产原创欧美精品| 亚洲精品在线播放| 亚州精品天堂中文字幕| 亚洲天堂一区二区| 中文字幕欧美日韩在线| 99在线观看免费| 亚洲韩国欧洲国产日产av| 日韩一级片中文字幕| 欧美日韩mp4| 久久中文字幕在线观看| 大荫蒂欧美视频另类xxxx| 最近中文字幕在线mv视频在线 | 青草青青在线视频| 久久激情婷婷| 中文字幕一区二区三区最新| 一区在线视频| 日韩午夜视频在线观看| 欧美国产综合| 快播日韩欧美| 7777久久香蕉成人影院| 国产一区精品视频| 日韩午夜电影网| 国产精品一 二 三| 手机在线电影一区| 国产精品青青草| av伊人久久| 国产精品一区视频网站| 国产一区国产二区国产三区| 91免费看片在线| 久久99久久人婷婷精品综合 | 999精品视频在线观看播放| 亚洲福利一区二区三区| 性猛交娇小69hd| 亚洲一级在线观看| 精品在线观看一区| 五月激情综合网| 一起操在线播放| 色综合久久久久久久久久久| 午夜精品一区二区三区视频| 欧美视频在线免费看| 国产一区二区播放| 欧美三级视频在线| 日韩精品国产一区二区| 欧美美女一区二区| 精品人妻一区二区三区免费看| 日韩女优电影在线观看| 国产精品sm调教免费专区| 亚洲国产婷婷香蕉久久久久久| 国产乱码一区二区| 国产香蕉精品视频一区二区三区| 欧美熟妇另类久久久久久不卡| 精品国内自产拍在线观看| 粉嫩一区二区三区| 69av在线播放| ccyy激情综合| 91精品美女在线| 成人无号精品一区二区三区| 精品免费视频123区| 欧美久久九九| 中文字幕99| 蜜桃在线一区二区三区| 国产福利视频在线播放| www.66久久| 国产精品嫩草69影院| 亚洲免费在线观看| 日本成人精品视频| 在线观看免费亚洲| 欧美一区二区三区网站| 亚洲国模精品一区| 高h放荡受浪受bl| 欧美激情精品久久久久久| 日本一区二区三区视频在线看| 国产精品永久在线| 日韩毛片视频| 亚洲二区三区四区| 男人的天堂久久精品| 国产裸体免费无遮挡| 国产日韩欧美综合在线| 精品无码一区二区三区| 欧美性黄网官网| 国产精品suv一区| 一本一道久久a久久精品逆3p| 精品3atv在线视频| 国产精品扒开腿做| 欧美一级本道电影免费专区| 日韩中文字幕一区二区| 日本在线不卡一区| 奇米影视四色在线| 日韩理论片在线| 欧美成人三级视频| 亚洲国产精品小视频| 少妇又色又爽又黄的视频| 26uuu另类亚洲欧美日本老年| 日韩成人动漫在线观看| 欧美精品成人一区二区在线观看| 久久三级视频| 伊人国产在线视频| 亚洲人成亚洲人成在线观看图片| 男人的天堂久久久| 亚洲第一精品久久忘忧草社区| 午夜黄色小视频| 国产精品jvid在线观看蜜臀| 欧美电影《轻佻寡妇》| 黄色录像特级片| 不卡的av中国片| brazzers精品成人一区| 欧美日韩一卡二卡三卡| av中文字幕播放| 2020国产精品视频| 青青草原综合久久大伊人精品 | 992tv成人免费视频| 狠狠综合久久av一区二区蜜桃 | 无码人妻丰满熟妇区毛片| 国产日产欧美一区二区视频| 国产3级在线观看| 亚洲国产另类 国产精品国产免费| 日韩成人影音| 亚洲最大成人免费视频| 久久精品成人| 国内精品国产三级国产aⅴ久| 天天综合日日夜夜精品| 日批视频免费观看| 欧美精品情趣视频| 亚洲国产国产| 日本一二三区视频在线| 91香蕉国产在线观看软件| 男人天堂资源网| 日韩av影院在线观看| 高清在线一区二区| 久久久99国产精品免费| 国精品**一区二区三区在线蜜桃| 呦呦视频在线观看| 91精品麻豆日日躁夜夜躁|