欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用AJAX的Struts驗證框架
使用AJAX的Struts驗證框架
--實(shí)時(shí)數據驗證是AJAX技術(shù)的一大優(yōu)勢

時(shí)間:2006-08-07
作者:Sonny Hastomo
瀏覽次數: 4781
本文關(guān)鍵字:AJAXStrutsvalidationfiltering驗證過(guò)濾
文章工具
 推薦給朋友
 打印文章

  實(shí)時(shí)數據驗證是AJAX技術(shù)的一大優(yōu)勢之一。通過(guò)應用此技術(shù),struts驗證框架將增強struts MVC,并使Web應用程序更接近于桌面應用程序。

  此驗證框架用于驗證字段。有許多在Web應用程序上進(jìn)行驗證的方法。這些方法可分為兩類(lèi):服務(wù)器端方法和客戶(hù)端方法。Struts驗證框架是面向基于Java的Web應用環(huán)境的最佳框架之一。它能夠配置應用程序,方法是使用服務(wù)器端驗證和錯誤消息,此錯誤消息在處理請求時(shí)呈現在調用的驗證流程上,它還能夠進(jìn)行客戶(hù)端驗證,方法是使用請求頁(yè)面上呈現的JavaScript。

  AJAX是一種JavaScript技術(shù),它能夠異步呼叫服務(wù)器并獲取XML文檔,這類(lèi)文檔最近非常流行。其用途之一就是實(shí)時(shí)數據驗證。

  本文關(guān)注使用AJAX增強現有struts驗證框架。必須開(kāi)發(fā)幾個(gè)組件(例如控制器),以選擇驗證框架,并呈現特定格式的消息(用于客戶(hù)端)和標簽庫(處理錯誤消息呈現)。

必要條件

  需要一個(gè)具有Eclipse和Tomcat應用服務(wù)器的Windows系統。請確定已在操作系統中注冊了MSXML 3.0 ActiveX對象。還需要Struts庫(http://struts.apache.org)和JDOM庫(www.jdom.org),以用于XML開(kāi)發(fā)(參見(jiàn)圖1圖2)。

服務(wù)器端場(chǎng)景

StrustsActionServlet

  我們必須擴展來(lái)自org.apache.struts.action.ActionServlet的類(lèi),以獲得servletMapping變量,此變量存儲關(guān)于如何針對動(dòng)作類(lèi)將該擴展格式化為瀏覽器地址形式的動(dòng)作路徑的信息。當添加代碼時(shí),我們必須將web.xml配置為應用服務(wù)器的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 Java代碼如下:public class StrutsActionServlet extends the ActionServlet.{public String getServletMapping() {return this.servletMapping;}}

AjaxValidationRequestProcessor

  要在第一步中支持現有Struts框架,我們必須擴展來(lái)自Struts軟件包的RequestProcessor。我們必須定制化此請求處理器,因為我們必須判別將如何進(jìn)行驗證(通過(guò)使用現有Struts框架,還是利用AJAX概念),還因為我們將在服務(wù)器和客戶(hù)端之間制訂一個(gè)有關(guān)如何解釋消息的契約。在消息呈現方面,我們將使用XML格式,這是一種很好的媒體消息傳遞格式。我們將應用的XML格式的定義是:

  XML Format

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

描述

  • Identity是客戶(hù)端JavaScript用于了解消息將被置于何處的ID。
  • Description是在服務(wù)器端呈現錯誤消息后的結果。

  首先我們需要在繼續流程映射之前,從Web描述符獲得servlet映射配置。調用此流程后,應用程序將準備表單實(shí)例,此實(shí)例繼承自AjaxForm類(lèi)。這一處理管理AJAX驗證,并且應進(jìn)行檢查以確定來(lái)自客戶(hù)端的請求沒(méi)有使用struts驗證框架。其他在請求過(guò)程中執行的流程是流程填充(用于收集客戶(hù)端發(fā)送到動(dòng)作表單的信息)和流程驗證(通過(guò)使用現有Struts驗證框架中已經(jīng)存在于A(yíng)jaxValidationRequestProcessor的父類(lèi)TilesRequestProcessor中的方法)。

  來(lái)自TilesRequestProcessor的驗證流程將調用所有基于struts驗證框架的驗證,并將動(dòng)作錯誤存儲到請求。我們需要仔細分析動(dòng)作錯誤,并生成XML消息驗證,此驗證將被發(fā)送到客戶(hù)端。因為我們希望更改支持驗證的行為方式,所以驗證流程應檢查所用的驗證框架的指示器(參見(jiàn)圖3)。

  使用JDOM作為處理引擎,生成XML消息。如圖4所示,如果流程驗證被調用,且驗證框架的條件等同于A(yíng)JAX驗證框架,則流程將繼續填充錯誤消息并構建XML消息驗證。

ErrorMessageHandler

  該類(lèi)處理XML消息生成器的功能。此Java類(lèi)將構建基于identity和description屬性的XML消息。調用方調用了buildXMLMessage之后,它將準備文檔并設置XML消息的根元素。此類(lèi)還具有一個(gè)addNextXMLMessage函數,以將更多驗證消息添加到XML(參見(jiàn)清單1)。

  清單1

  ...public void buildXMLMessage() throws ParserConfigurationException {// initiate document builder to prepare the media of XML Messagethis.rootElement = new Element(CONSTANT_MESSAGE);addNextXMLMessage();}...public void addNextXMLMessage() throws ParserConfigurationException {// creating the xml message based on format aboveElement identityElement = new Element(CONSTANT_IDENTITY);identityElement.setAttribute(CONSTANT_NAME, this.identity);Element descriptionElement = new  Element(CONSTANT_DESCRIPTION);descriptionElement.addContent(this.description);identityElement.addContent(descriptionElement);rootElement.addContent(identityElement);}

  此流程方法將響應的內容類(lèi)型設置為“text/xml”,并將XML消息作為字符串發(fā)送。AjaxValidationRequestProcessor代碼上的流程函數如清單2所示。

  清單2

  public void process(HttpServletRequest req, HttpServletResponse resp)throws IOException, ServletException{if ( request.getParameter(CONSTANT_VALIDATION_FRAMEWORK_ARG) != null ){...this.processValidate(req, resp, form, mapping);response.setContentType(CONSTANT_XML_CONTENT_TYPE);response.getWriter().write(sbXMLMessage.toString());response.flushBuffer();}} else{super.process(req, resp);}}

processValidation方法將填充

  動(dòng)作錯誤,并基于面向客戶(hù)端的XML格式契約構建消息。AjaxValidationRequestProcessor代碼上的processValidation函數如下所示:

  ...ActionErrors errors = (ActionErrors) request.getAttribute(Globals.ERROR_KEY);Locale locale = (Locale) request.getAttribute(Globals.LOCALE_KEY);generateXMLMessage(errors, identity, locale, sbXMLMessage);...

客戶(hù)端場(chǎng)景

構建標簽庫組件

  • AjaxJavaScriptLibraryTag:此標簽庫組件在客戶(hù)端呈現JavaScript功能,以實(shí)現基本XMLHTTP控制器功能。
  • AjaxErrorHtmlRenderTag:此標簽庫組件在JSP頁(yè)面呈現錯誤消息區域。

配置標簽庫定義

  開(kāi)發(fā)出標簽庫組件之后,我們需要配置清單3中顯示的標簽庫tld文件。

  清單3

  <taglib><tlibversion>1.0</tlibversion><jspversion>1.1</jspversion><shortname>ajaxLib</shortname><tag><name>library</name><tagclass>net.sf.ajax.taglib.AjaxJavaScriptLibrary</tagclass><bodycontent>JSP</bodycontent></tag><tag><name>error</name><tagclass>net.sf.ajax.taglib.AjaxErrorHtmlRender</tagclass><bodycontent>JSP</bodycontent><attribute><name>property</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>event</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>

構建JSP和Struts配置

  要模擬驗證處理的結果,我們首先需要構建呈現層,方法是合并我們已經(jīng)構建的標簽庫。在此例中,我試圖給出一個(gè)示例驗證(通過(guò)使用來(lái)自Struts的驗證規則組件)以及來(lái)自表單本身的驗證。準備五個(gè)JSP頁(yè)面下的文本框。第一個(gè)到第四個(gè)文本框使用驗證規則配置,第五個(gè)文本框使用來(lái)自動(dòng)作表單的驗證流程。除此之外,我們還需要一個(gè)提交按鈕,以在提交表單后模擬它,現有的struts驗證仍在沒(méi)有AJAX的情況下工作。用戶(hù)界面外觀(guān)如圖5所示。

構建動(dòng)作和動(dòng)作表單

  為獲得Struts動(dòng)作,我們轉到已經(jīng)構建的JSP。此動(dòng)作代碼如下所示:

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

  如果輸入為空,則此動(dòng)作表單代碼將驗證requiredText屬性。請記住,要從AjaxForm類(lèi)擴展此表單。動(dòng)作表單的驗證方法如下所示:

  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驗證規則(例如最小長(cháng)度、最大長(cháng)度、電子郵件和模式文本)將應用于客戶(hù)端的輸入對象,且配置與清單4類(lèi)似。

  清單4

  <field property="paternText"depends="required,mask"><arg0 key="label.paternText"/><var><var-name>mask</var-name><var-value>^[0-9]{3}-[0-9]{2}$</var-value></var></field><field property="minLength"depends="minlength"><arg0 key="label.minLength"/><arg1 key="${var:minlength}" resource="false"/><var><var-name>minlength</var-name><var-value>5</var-value></var></field><field property="maxLength"depends="maxlength"><arg0 key="label.maxLength"/><arg1 key="${var:maxlength}" resource="false"/><var><var-name>maxlength</var-name><var-value>5</var-value></var></field><field property="email"depends="email"><arg0 key="label.email"/></field>

驗證處理流

  首先客戶(hù)端會(huì )初始化XMLHTTP組件以執行到服務(wù)器的請求,然后在用戶(hù)觸發(fā)器開(kāi)始構建時(shí),URL參數將被發(fā)送到服務(wù)器。在完成構建參數后,客戶(hù)端會(huì )連接oneadystatechange XMLHTTP事件,以偵聽(tīng)來(lái)自服務(wù)器端的響應。收到響應后,客戶(hù)端會(huì )開(kāi)始分析XML驗證消息,并將消息放置到正確的區域(參見(jiàn)圖6)。

  如果請求被服務(wù)器接受,則服務(wù)器會(huì )開(kāi)始檢查AJAX驗證條件的參數,并處理驗證。完成之后,將從生成的錯誤對象過(guò)濾出與用戶(hù)輸入對象相關(guān)的特定錯誤。在過(guò)濾流程完成之后,將生成XML消息,并發(fā)送回客戶(hù)端(參見(jiàn)圖7)。

結束語(yǔ)

  在本文中,我們構建了一個(gè)控制器,它能夠接收來(lái)自客戶(hù)端的異步請求,并合并struts驗證流程以產(chǎn)生動(dòng)作錯誤對象。在產(chǎn)生錯誤對象并生成作為應答返回客戶(hù)端以指示錯誤消息的XML消息之后,將對被驗證的特定輸入對象進(jìn)行過(guò)濾(參見(jiàn)圖8圖9)。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Validator驗證框架使用教程
j2ee工程師的學(xué)習之路,你走到哪了? - java人渣 - ItEye技術(shù)網(wǎng)站
Struts第4天
用Struts Validator檢查你的表單
Validator驗證框架
dwr簡(jiǎn)介
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久