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

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

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

開(kāi)通VIP
struts原理與實(shí)踐(6)
Struts原理與實(shí)踐(6) - -
本文我們來(lái)討論一下Struts中的輸入校驗問(wèn)題。我們知道,信息系統有垃圾進(jìn)垃圾出的特點(diǎn),為了避免垃圾數據的輸入,對輸入進(jìn)行校驗是任何信息系統都要面對的問(wèn)題。在傳統的編程實(shí)踐中,我們往往在需要進(jìn)行校驗的地方分別對它們進(jìn)行校驗,而實(shí)際上需要校驗的東西大多都很類(lèi)似,如必需的字段、日期、范圍等等。因此,應用程序中往往到處充斥著(zhù)這樣一些顯得冗余的代碼。而與此形成鮮明對照的是Struts采用Validator框架(Validator框架現在是Jakarta Commons項目的一部分)來(lái)解決校驗問(wèn)題,它將校驗規則代碼集中到外部的且對具體的應用程序中立的.xml文件中,這樣,就將那些到處出現的校驗邏輯從應用程序中分離出來(lái),任何一個(gè)Struts應用都可以使用這個(gè)文件,同時(shí)還為校驗規則的擴展提供了便利。更難能可貴的是由于Validator框架將校驗中要用到的一些消息等信息與資源綁定有機結合在一起,使得校驗部分的國際化編程變得十分的便捷和自然。
Validator框架大致有如下幾個(gè)主要組件:
Validators:是Validator框架調用的一個(gè)Java類(lèi),它處理那些基本的通用的校驗,包括required、mask(匹配正則表達式)、最小長(cháng)度、最大長(cháng)度、范圍、日期等
.xml配置文件:主要包括兩個(gè)配置文件,一個(gè)是validator-rules.xml,另一個(gè)是validation.xml。前者的內容主要包含一些校驗規則,后者則包含需要校驗的一些form及其組件的集合。
資源綁定:提供(本地化)標簽和消息,缺省地共享struts的資源綁定。即校驗所用到的一些標簽與消息都寫(xiě)在A(yíng)pplicationResources.properity文件中。
Jsp tag:為給定的form或者action path生成JavaScript validations。
ValidatorForm:它是ActionForm的一個(gè)子類(lèi)。
為了對Validator框架有一個(gè)比較直觀(guān)的認識,我們還是以前面的登陸例子的輸入來(lái)示范一下Validator框架的使用過(guò)程:
首先,找一個(gè)validator-rules.xml文件放在mystruts\WEB-INF目錄下,下面是該文件中涉及到的required驗證部分代碼的清單:
<validator name="required"<!--①--> classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors,javax.servlet.http.HttpServletRequest"<!--②--> msg="errors.required"><!--③--> <javascript><![CDATA[ function validateRequired(form) { var isValid = true; var focusField = null; var i = 0; var fields = new Array(); oRequired = new required(); for (x in oRequired) { var field = form[oRequired[x][0]]; if (field.type == ‘text‘ || field.type == ‘textarea‘ || field.type == ‘file‘ || field.type == ‘select-one‘ || field.type == ‘radio‘ || field.type == ‘password‘) { var value = ‘‘; // get field‘s value if (field.type == "select-one") { var si = field.selectedIndex; if (si >= 0) { value = field.options[si].value; } } else { value = field.value; } if (trim(value).length == 0) { if (i == 0) { focusField = field; } fields[i++] = oRequired[x][1]; isValid = false; } } } if (fields.length > 0) { focusField.focus(); alert(fields.join(‘\n‘)); } return isValid; } // Trim whitespace from left and right sides of s. function trim(s) { return s.replace( /^\s*/, "" ).replace( /\s*$/, "" ); } ]]> </javascript></validator>
① 節的代碼是引用一個(gè)服務(wù)器邊的驗證器,其對應的代碼清單如下:
public static boolean validateRequired(Object bean, ValidatorAction va, Field field, ActionErrors errors, HttpServletRequest request) { String value = null; if (isString(bean)) { value = (String) bean; } else { value = ValidatorUtil.getValueAsString(bean, field.getProperty()); } if (GenericValidator.isBlankOrNull(value)) { errors.add(field.getKey(), Resources.getActionError(request, va, field)); return false; } else { return true; }}
② 節是驗證失敗后的出錯信息,要將對應這些鍵值的信息寫(xiě)入到ApplicationResources.properity文件中,常見(jiàn)的錯誤信息如下:
# Standard error messages for validator framework checkserrors.required={0} is required.errors.minlength={0} can not be less than {1} characters.errors.maxlength={0} can not be greater than {1} characters.errors.invalid={0} is invalid.errors.byte={0} must be a byte.errors.short={0} must be a short.errors.integer={0} must be an integer.errors.long={0} must be a long.errors.float={0} must be a float.errors.double={0} must be a double.errors.date={0} is not a date.errors.range={0} is not in the range {1} through {2}.errors.creditcard={0} is an invalid credit card number.errors.email={0} is an invalid e-mail address.
③ 節的代碼用于客戶(hù)邊的JavaScript驗證
其次,在validation.xml文件中配置要驗證的form極其相應的字段,下面是該文件中的代碼:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"><form-validation><formset><form name="userInfoForm"><field property="username"depends="required,mask,minlength,maxlength"><arg0 key="logon.jsp.prompt.username" resource="true"/><arg1 name="minlength" key="${var:minlength}" resource="false"/><arg1 name="maxlength" key="${var:maxlength}" resource="false"/><var><var-name>mask</var-name><var-value>^\w</var-value></var><var><var-name>minlength</var-name><var-value>2</var-value></var><var><var-name>maxlength</var-name><var-value>16</var-value></var></field><field property="password"depends="required,minlength,maxlength"><arg0 key="logon.jsp.prompt.password" resource="true"/><arg1 name="minlength" key="${var:minlength}" resource="false"/><arg1 name="maxlength" key="${var:maxlength}" resource="false"/><var><var-name>minlength</var-name><var-value>2</var-value></var><var><var-name>maxlength</var-name><var-value>16</var-value></var></field></form></formset></form-validation>
這里要注意的是:該文中的和中的鍵值都是取自資源綁定中的。前面還講到了出錯信息也是寫(xiě)入ApplicationResources.properity文件中,因此,這就為國際化提供了一個(gè)很好的基礎。
再次,為了使服務(wù)器邊的驗證能夠進(jìn)行,將用到的formBean從ActionForm的子類(lèi)改為ValidatorForm的子類(lèi),即:
將public class UserInfoForm extends ActionForm改為:public class UserInfoForm extends ValidatorForm
到此,進(jìn)行服務(wù)器邊的驗證工作已經(jīng)一切準備得差不多了,此時(shí),只要完成最后步驟就可以實(shí)驗服務(wù)器邊的驗證了。但大多數情況下,人們總希望把這些基本的簡(jiǎn)單驗證放在客戶(hù)邊進(jìn)行。
為了能進(jìn)行客戶(hù)邊的驗證,我們還要對logon.jsp文件做適當的修改。
將 <html:form action="/logonAction.do" focus="username">
改為
<html:form action="/logonAction.do" focus="username" onsubmit="return validateUserInfoForm(this)">
在標簽后加上:
<html:javascript dynamicJavascript="true" staticJavascript="true" formName="userInfoForm"/>
最后,對struts的配置文件struts-config.xml作適當的修改:
1、將 <action input="/logon.jsp" name="userInfoForm" path="/logonAction" scope="session" type="action.LogonAction" validate="false" >
改為
<action input="/logon.jsp" name="userInfoForm" path="/logonAction" scope="session" type="action.LogonAction" validate="true" >
其作用是要求進(jìn)行校驗
2、將下列代碼放在struts-config.xml文件中的標簽前。其作用是將用于校驗的各個(gè)組件結合在一起。
<plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" /></plug-in>
到此為止,我們的一切工作準備就緒,您可以享受自己的勞動(dòng)成果了,試著(zhù)輸入各種組合的用戶(hù)名和口令,看看它們的驗證效果。仔細體會(huì )你會(huì )發(fā)現,服務(wù)器邊的驗證要更全面一些,比如對password的字符長(cháng)度的驗證。
參考文獻:
《Struts in Action》Ted Husted Cedric Dumoulin George Franciscus David Winterfeldt著(zhù)
《Programming Jakarta Struts》Chuck Cavaness著(zhù)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用AJAX的Struts驗證框架
Struts Validator 開(kāi)發(fā)指南
Struts的驗證--Validator
Struts 2與AJAX(第三部分)
Validator驗證框架使用教程
struts2中validation校驗框架的原理和使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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