第1講 搭建Struts2環(huán)境與簡單應用開發(fā)_第1頁
第1講 搭建Struts2環(huán)境與簡單應用開發(fā)_第2頁
第1講 搭建Struts2環(huán)境與簡單應用開發(fā)_第3頁
第1講 搭建Struts2環(huán)境與簡單應用開發(fā)_第4頁
第1講 搭建Struts2環(huán)境與簡單應用開發(fā)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1講 搭建struts2環(huán)境與簡單應用開發(fā)1. struts2框架l struts2由傳統(tǒng)的struts1和webwork兩個經典mvc框架發(fā)展而來l struts2是一個非常優(yōu)秀的mvc框架2. mvc思想概述mvc思想將應用中各組件按功能進行分類,不同的組件使用不同技術充當,甚至推薦了嚴格分層,不同組件被嚴格限制在其所在層內,各層之間以松耦合的方式組織在一起,從而提供良好的封裝。model1(jsp+javabean):jsp頁面接收處理客戶端請求,對請求處理后直接做出響應。用少量的javabean來處理數(shù)據(jù)庫連接、數(shù)據(jù)庫訪問等操作。jsp頁面身兼view和controller兩種角色,

2、將控制邏輯和表現(xiàn)邏輯混雜在一起,從而導致代碼的重用性低,增加了應用的擴展和維護的難度。model2(jsp+servlet+javabean):屬于mvc架構的設計模式。mvc思想將一個應用分為三個基本部分:model(模型)、view(視圖)、controller(控制器),這三個部分以最少的耦合協(xié)同工作,從而提高應用的可擴展性和維護性。mvc有如下特點:l 多個視圖對于一個模型,一旦模型發(fā)生變化,易于維護;l 模型返回的數(shù)據(jù)與顯示邏輯分離;l 應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴展性;l 控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請求。因

3、此,控制層可以說是包含了用戶權限的概念;l mvc更符合軟件工程化管理的精神。3. struts2的下載和安裝下載并搭建struts2環(huán)境:(1). 下載struts2.2.1;(2). 找到開發(fā)struts2應用需要使用到的jar文件;(3). 編寫struts2的配置文件;(4). 在web.xml中加入struts2框架的啟動配置。開發(fā)struts2最少需要的jar文件:(1). struts2-core-.jar:struts2框架的核心類庫;(2). xwork-core-.jar:xwork類庫,struts2在其上構建;(3). ognl-3.0.ja

4、r:對象圖導航語言(object graph navigation language),一種功能強大的表達式語言,主要用于讀寫對象的屬性;(4). freemarker-2.3.16.jar:struts2ui標簽的模板使用freemarker編寫;(5). commons-fileupload-1.2.1.jar:文件上傳組件,2.1.6以后版本必須加入此文件;(6). commons-io-1.3.2.jar:io輸入輸出流組件,主要完成文件的讀寫功能;(7). javassist-3.7.ga.jar:javassist是一個開源的分析、編輯和創(chuàng)建java字節(jié)碼的類庫。編寫struts2

5、的配置文件struts2默認的配置文件為struts.xml,該文件需要存放在web-inf/classes下在web.xml中加入struts2框架的啟動配置<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.strutsprepareandexecutefilter</filter-class></filter><filter-mapping><filter-na

6、me>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>struts2框架是通過filter啟動的,在web.xml中配置。在strutsprepareandexecutefilter的init()方法中將會讀取類路徑下默認的配置文件struts.xml完成初始化操作。注意:struts2讀取到struts.xml的內容后,以javabean的形式存放在內存中,以后struts2對用戶的每次請求處理將使用內存中的數(shù)據(jù),而不是每次都讀取struts.xml文件

7、。4. strus2簡單應用開發(fā)4.1 helloworld目標:點擊超鏈接,發(fā)出請求,在請求中存數(shù)據(jù),在另一個頁面中顯示存入的數(shù)據(jù)。l jsp+servlet實現(xiàn)l struts實現(xiàn)總結:l package用來管理action,主要用于管理一組業(yè)務功能相關的action。l name屬性:必須有并要求name屬性值唯一,它不對應java的類包。l namespace屬性:定義包的命名空間,命名空間是訪問該包下action的路徑一部分。l 只有當包都繼承了struts-default包,才可以使用struts2的核心功能。l abstract="true"表示該包為抽象包,

8、不能包含actionl struts2中action的默認后綴為.action目標:struts如何實現(xiàn)簡單轉發(fā) - action配置的各項默認值。l 如果沒有為action指定class,默認是actionsupport;l 如果沒有為action指定method,默認執(zhí)行action中的execute()方法;l 如果沒有指定result的name屬性,默認值是success4.2 登錄目標:輸入用戶名、密碼,成功跳轉到成功頁面,失敗返回登錄頁面。l jsp+servlet實現(xiàn)l 表單+actionl struts標簽+actionl 國際化總結:l 添加國際化配置<constant

9、 name="struts.custom.i18n.resources" value="mess"/>l 添加國際化文件perties、mess_zh_cn.properties、mess_en_us.propertiesl 修改internet選項第2講 struts2處理流程與常規(guī)配置1.struts2應用開發(fā)步驟(1). 在web.xml文件中定義核心filter來攔截用戶請求。(2). 如果需要以post方法提交請求,則定義包含表單數(shù)據(jù)的jsp頁面。如果僅僅只是以get方式發(fā)送請求,則無須此步驟。(3). 定義處理用戶請求的

10、action類。(4). 配置action。(5). 配置處理結果和物理視圖資源之間的對應關系。(6). 編寫視圖資源。如果action需要把數(shù)據(jù)傳給視圖資源,則可以借助于ognl表達式。2.struts2的處理流程l 控制器包括核心控制器和業(yè)務控制器l 業(yè)務控制器與物理視圖解耦:若需要將某個視圖名映射到不同視圖資源,無須修改xxxaction的代碼,只需修改配置文件。3.struts常量配置l struts.i18n.encoding:指定web應用的默認編碼集,相當于request.setcharacterencoding()。l struts.custom.i18n.resources:

11、指定國際化資源文件的basenamel struts.action.extension:需要struts處理的請求后綴,默認值為action,可以指定多個l struts.server.static.browsercache:設置瀏覽器是否緩存靜態(tài)內容,默認值為true,開發(fā)時應設為falsel struts.configuration.xml.reload:當struts的配置文件修改后,系統(tǒng)是否自動重新加載該文件,開發(fā)時應設為truel struts.devmode:設置struts2應用是否為開發(fā)模式,打印出更詳細的信息備注:l 哪些常量是有效的?在struts2-core2.2.1.j

12、ar壓縮文件的orgapachestruts路徑下的perties文件中定義。l struts2默認會加載struts.xml、struts-default.xml、struts-plugin.xml三個配置文件n struts.xml是開發(fā)者定義的默認配置文件n struts-default.xml是struts框架自帶的配置文件n struts-plugin.xml是struts插件的默認配置文件n 加載順序為struts-default.xml、struts-plugin.xml、struts.xmll struts2常量配置有三種方式n 通過struts.xml配

13、置文件n 通過perties文件n 通過web.xml文件l struts2的所有配置文件(包括用戶自定義配置文件)都可以用來配置常量,推薦struts.xmll struts2搜索常量的順序為struts-default.xml、struts-plugin.xml、struts.xml、perties、web.xml,如果在多個文件中配置了同一個struts2常量,則后一個會覆蓋前一個4.包含其他配置文件l 為了避免struts.xml文件過于龐大,提高struts.xml文件的可讀性,可以將一個struts.xml文件分解成多個配置文件,在strut

14、s.xml中包含其他配置文件l <include file=”struts-part1.xml”/>第3講 實現(xiàn)和配置action1.action接口和actionsupport類l action類里的屬性,不僅可用于封裝請求參數(shù),還可用于封裝處理結果l 為了讓用戶開發(fā)的action類更規(guī)范,struts2提供了一個action接口l actionsupport類是action接口的實現(xiàn)類,如果開發(fā)者的action繼承了actionsupport類,則會大大簡化action的開發(fā)l actionsupport類是action的默認處理類2.action訪問servlet apil

15、action訪問servlet api是必要的l web應用中經常訪問的servlet api有httpservletrequest、httpservletsession和httpservletcontext,對應于jsp內置對象request、session、applicationl struts2提供了一個actioncontext類,用于action訪問servlet apin object get(object key):request.getattribute(string name)n map getapplication():返回一個map對象,該對象模擬了servletcont

16、ext實例n map getsession():返回一個map對象,該對象模擬了httpsession實例n static actioncontext getcontext():獲取系統(tǒng)的actioncontext實例l 實例:測試action訪問servlet apin 實現(xiàn)登錄功能,返回success或errorn 用application實現(xiàn)簡單計數(shù)器n 用session保存用戶名n 用request保存提示信息(tip)l action既可以徹底與servlet api分離,也可以用簡單的方式操作request、session、application范圍的屬性3.action直接訪問s

17、ervlet apil 為了在action中直接訪問servlet api,struts2提供了如下接口:n servletcontextaware:實現(xiàn)接口的action可以直接訪問servletconext實例n servletrequestaware:實現(xiàn)接口的action可以直接訪問httpservletrequest實例n servletresponseaware:實現(xiàn)接口的action可以直接訪問httpservletresponse實例l 實例:通過httpservletresponse為系統(tǒng)添加cookie對象,實現(xiàn)自動登錄l 即使獲得httpservletresponse對象

18、,也不要嘗試直接在action中對客戶端生成響應4.使用servletactioncontext訪問servlet api5. 配置actionl 包和命名空間n struts2使用包來組織action,action是struts2的基本“程序單位”n 配置<package />元素時必須指定name屬性,該屬性是引用該包的唯一標識n extends屬性值必須是另一個包的name屬性n 因為struts2的配置文件是從上到下處理的,所以父包應該在子包前面定義n 命名空間主要是為了處理同一個web應用中包含同名action的情形。同一個命名空間里不能有同名的action,不同命名空間

19、里可以有同名的actionn struts搜索命名空間的順序u 命名空間只有一個級別。如果請求的url是/bookservice/search/get.action,系統(tǒng)將先在/bookservice/search的命名空間(存在)下查找名為get的action,如果在該命名空間內找到名為get的action,則由該action處理用戶請求;如果在該命名空間內沒有找到名為get的action,系統(tǒng)將直接進入默認的命名空間中查找名為get的actin,而不會在/bookservice的命名空間下查找名為get的action。u 默認命名空間和根命名空間的區(qū)別:默認命名空間可以處理任何命名空間下的

20、action請求,根命名空間只會處理根命名空間下的請求。l action的基本配置n 定義<action />元素時,需要指定name屬性,name默認不允許使用“/”,如果想使用“/”,需要設置struts.enable.slashesinactionnames=truel 使用action的動態(tài)方法調用n 動態(tài)方法調用允許在一個action內包含多個控制處理邏輯n 使用動態(tài)方法調用,應該確保struts.enable.dynamicmethodinvocation = truefunction regist()var myform = document.forms0;myfor

21、m.action = "login!regist"<input type="submit" value="注冊" onclick="regist()"/>l 指定method屬性及使用通配符n 使用method屬性實現(xiàn)一個action包含多個處理邏輯n 使用通配符簡化struts.xml配置n 通配符可以在method、class和result中使用n 不建議超鏈接直接連接到某個視圖資源,建議將所有請求都交給struts框架處理n <action name=”*”><result>

22、;/1.jsp</result></action>第4講 配置result和異常處理1.配置resultl 理解處理結果n <result/>元素定義邏輯視圖和物理視圖之間的映射關系n 瀏覽者、控制器和視圖資源之間的順序圖如下:l struts2支持的結果類型n dispatcher:指定使用jsp作為視圖的結果類型(默認值)n redirect:直接跳轉到其它url的結果類型n redirectaction:直接跳轉到其它action的結果類型n plaintext:用于顯示某個頁面的原始代碼的結果類型l plaintext結果類型n location:指

23、定實際的資源視圖n charset:指定輸出頁面時所使用的字符集<result name="source" type="plaintext"><param name="location">/xxx.jsp</param><param name="charset">utf-8</param>不設置該選項易出現(xiàn)中文亂碼</result>l redirect結果類型與dispatcher的區(qū)別:n 重定向會丟失所有的請求參數(shù)、請求屬性和action處

24、理結果n 重定向地址欄會發(fā)生變化l redirectaction結果類型:直接將請求重定向到另一個actionn actionname:指定重定向的action名n namespace:指定重定向的action所在的命名空間n 包括同一命名空間的重定向和不同命名空間的重定向l 全局結果n 使用<global-results/>標簽定義n 如果一個action包含了與全局結果同名的結果集,則action里的局部result會覆蓋全局result。2. 異常處理l 在action中手動處理異常,缺點:異常處理與代碼耦合,一旦需要改變異常處理方式,必須修改代碼!l struts2中的聲明

25、式異常:以聲明式的方式管理異常處理n action接口中execute方法簽名n 在struts.xml中配置異常處理n 前提:打開struts2的異常處理功能<interceptor name="exception" class="erceptor.exception mappinginterceptor"/><interceptor-stack name="basicstack"><interceptor-ref name="except

26、ion"/>.</interceptor-stack>l 聲明式異常捕獲n 在struts.xml文件中配置<exception-mappting/>元素u exception:指定異常類型u result:指定邏輯視圖名n 異常映射u 局部異常映射:<action />元素的子元素u 全局異常映射:<global-exception-mappint/>元素的子元素n 實例:u 拋出myexception和sqlexception<global-results><!- 定義當sql、root兩個邏輯異常都對應ex

27、ception.jsp頁 -><result name="sql">/exception.jsp</result><result name="root">/exception.jsp</result></global-results><!- 定義全局異常映射 -><global-exception-mappings><!- 當action中遇到sqlexception異常時,系統(tǒng)將轉入name為sql的結果中-><exception-mapping

28、 exception="java.sql.sqlexception" result="sql"/><!- 當action中遇到exception異常時,系統(tǒng)將轉入name為root的結果中-><exception-mapping exception="java.lang.exception" result="root"/></global-exception-mappings><action name="login" class="org

29、.crazyit.app.action.loginaction"><!- 定義局部異常映射, 當action中遇到myexception異常時,系統(tǒng)將轉入name為my的結果中-><exception-mapping exception="org.crazyit.app.exception.myexception"result="my"/><!- 定義三個結果映射 -><result name="my">/exception.jsp</result><r

30、esult name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>n 全局異常映射的result屬性值通常不要使用局部結果,局部異常映射的result屬性值既可以使用全局結果,也可以使用局部結果l 輸出異常信息n <s:property value=”exception”/>n <s:proterty value=”exceptionstack”/>第5講 str

31、uts2的國際化1. 加載全局資源文件l 配置basename:<constant name="struts.custom.i18n.resources" value="sandy"/>2. 訪問國際化消息l 用<s:text/>輸出國際化消息. <s:text name="key"/>l 用表單元素輸出國際化信息(key屬性)l 在action中輸出國際化消息. actionsupport類的gettext方法3. 輸出帶占位符的國際化消息l 在jsp頁面中填充國際化消息里的占位符<s:te

32、xt name="title"><s:param><s:property value="username"/></s:param> <s:param><s:property value="username"/></s:param></s:text>l 在action中填充國際化消息里的占位符. gettext(string atextname,list args). gettext(string key, string args)4. 加載資源文

33、件的方式l 包范圍資源文件. 在包的根路徑下建立多個文件名為package_lauguage_perties的文件. action優(yōu)先使用包范圍的資源文件l action范圍資源文件. 在action類所在路徑建立actionname_language_perties文件. action優(yōu)先加載action范圍資源文件. action范圍的資源文件,允許不同action使用相同的key表示不同的字符串l 臨時指定資源文件. 借助于<s:i18n/>標簽,在jsp頁面輸出國際化消息時指定國際化資源的位置. <s:i18n name=”

34、basename”></s:i18n>第6講 struts2的類型轉換1.問題的提出l struts2框架需要解析http請求參數(shù),并將請求參數(shù)傳給控制器組件。l 問題:http請求參數(shù)都是字符串類型,action中定義的是java數(shù)據(jù)類型,struts2框架必須將這些字符串參數(shù)轉換成相應的數(shù)據(jù)類型。2.struts2內建的類型轉換器l boolean和booleanl char和characterl int和integerl long和longl float和floadl double和doublel date:日期格式使用用戶請求所在locale的short格式l 數(shù)組:

35、在默認情況下,數(shù)組元素是stringl 集合:在默認情況下,假定集合元素類型為string,創(chuàng)建一個新的arraylist封裝所有的字符串l com.opensymphony.xwork2.conversion.impl.xworkbasicconverter(內置類型轉換類)3.基于ognl的類型轉換l username 賦值給action中屬性名為username的屬性l bean.firstname 賦值給action中屬性名為bean對象的firstname屬性4.自定義類型轉換器l 需求:實現(xiàn)username,password與user類型之間的轉換l 自定義類型轉換器需要繼承def

36、aulttypeconverter類/類型轉換器必須重寫convertvalue方法,該方法需要完成雙向轉換public object convertvalue(map context, object value, class totype)/當需要將字符串向user類型轉換時if (totype = user.class )/系統(tǒng)的請求參數(shù)是一個字符串數(shù)組string params = (string)value;/創(chuàng)建一個user實例user user = new user();/只處理請求參數(shù)數(shù)組第一個數(shù)組元素,/并將該字符串以英文逗號分割成兩個字符串string uservalues

37、= params0.split(",");/為user實例賦值user.setname(uservalues0);user.setpass(uservalues1);/返回轉換來的user實例return user;else if (totype = string.class )/將需要轉換的值強制類型轉換為user實例user user = (user) value;return "<" + user.getname() + ","+ user.getpass() + ">" return null

38、;5. 注冊類型轉換器l struts2支持三種方式來注冊類型轉換器. 注冊局部類型轉換器:僅僅對某個action的屬性起作用. 注冊全局類型轉換器:對所有action的特定類型的屬性都會生效. 用注解來注冊類型轉換器:通過注解方式來注冊類型轉換器l 局部類型轉換器. 注冊局部類型轉換器使用局部類型轉換文件指定. 局部類型轉換文件的文件名應為actionnperties形式. 類型轉換文件應該和action類文件放在相同的位置. 內容:<propname>=<converterclass>l 全局類型轉換器. 全局類型轉換器對指定類型

39、的屬性起作用. 文件名:perties. 放在web-inf/classes路徑下. 內容:<proptype>=<converterclass>l 用注解注冊類型轉換器. typeconversion(converter="com.xawx.web.converter.hyphenconverter")6. 基于struts2的自定義類型轉換器l struts2提供了一個strutstypeconverter抽象類,該抽象類是defaulttypeconverter的子類,strutstypeconverte

40、r類簡化了類型轉換器的實現(xiàn)public class userconverter extends strutstypeconverter /實現(xiàn)將字符串類型轉換成復合類型的方法public object convertfromstring(map context, string values , class toclass)/創(chuàng)建一個user實例user user = new user();/只處理請求參數(shù)數(shù)組第一個數(shù)組元素,/并將該字符串以英文逗號分割成兩個字符串string uservalues = values0.split(",");/為user實例賦值user.se

41、tname(uservalues0);user.setpass(uservalues1);/返回轉換來的user實例return user;/實現(xiàn)將復合類型轉換成字符串類型的方法public string converttostring(map context, object o)/將需要轉換的值強制類型轉換為user實例user user = (user) o;return "<" + user.getname() + ","+ user.getpass() + ">"第7講 struts2的輸入校驗1.關于輸入校驗l

42、為什么學習輸入校驗?. 輸入校驗是所有web應用必須處理的問題。. 通過輸入頁面收集的數(shù)據(jù)既有正常用戶的誤輸入,也有惡意用戶的惡意輸入。. 健壯的系統(tǒng)必須將這些非法輸入阻止在應用之外,防止非法輸入進入系統(tǒng)。l 輸入校驗:捕獲異常輸入時,應用程序直接返回,提示瀏覽者必須重新輸入。l 輸入校驗分為客戶端校驗和服務器端校驗。. 客戶端校驗:過濾正常用戶的誤操作,主要通過javascript代碼完成。. 服務器端校驗:通過在應用中編程實現(xiàn),是整個應用阻止非法數(shù)據(jù)的最后防線。2.基于xml配置方式的輸入校驗l 使用struts的校驗框架進行校驗,無須對程序代碼進行任何改變,只需編寫校驗規(guī)則文件即可,校驗

43、規(guī)則文件指定每個表單域應該滿足怎么的規(guī)則。l 需求:表單驗證. name和pass只能是字母、數(shù)字和下劃線,且長度必須在4到25之間;. age必須在1-150之間;. birth必須在1900-01-01 2050-02-21之間。l 為action指定校驗文件. actionclassname-validation.xml. 保存在與action class文件相同的路徑下l 編寫輸入校驗文件:com.opensymphony.xwork2.validator.validators下的default.xml中找到<?xml version="1.0" encodi

44、ng="gbk"?><!- 指定校驗配置文件的dtd信息 -><!doctype validators public "-/opensymphony group/xwork validator 1.0.3/en""<!- 校驗文件的根元素 -><validators><!- 校驗action的name屬性 -><field name="name"><!- 指定name屬性必須滿足必填規(guī)則 -><field-validator type=

45、"requiredstring"><param name="trim">true</param><message>必須輸入名字</message></field-validator><!- 指定name屬性必須匹配正則表達式 -><field-validator type="regex"><param name="expression"><!cdata(w4,25)></param><

46、message>您輸入的用戶名只能是字母和數(shù)字,且長度必須在4到25之間</message></field-validator></field><!- 校驗action的pass屬性 -><field name="pass"><!- 指定pass屬性必須滿足必填規(guī)則 -><field-validator type="requiredstring"><param name="trim">true</param><mes

47、sage>必須輸入密碼</message></field-validator><!- 指定pass屬性必須滿足匹配指定的正則表達式 -><field-validator type="regex"><param name="expression"><!cdata(w4,25)></param><message>您輸入的密碼只能是字母和數(shù)字,且長度必須在4到25之間</message></field-validator></fi

48、eld><!- 指定age屬性必須在指定范圍內-><field name="age"><field-validator type="int"><param name="min">1</param><param name="max">150</param><message>年紀必須在1到150之間</message></field-validator></field><!-

49、指定birth屬性必須在指定范圍內-><field name="birth"><field-validator type="date"><!- 下面指定日期字符串時,必須使用本locale的日期格式 -><param name="min">1900-01-01</param><param name="max">2050-02-21</param><message>生日必須在$min到$max之間</messa

50、ge></field-validator></field></validators>l 校驗過程. 當輸入校驗失敗后,struts2將返回名為“input”的邏輯視圖,因此需要配置。. 校驗成功后,執(zhí)行action中相應的方法。l 顯示校驗錯誤. <fielderror/>l 提示. 類型轉換失敗的提示消息,輸入校驗的提示消息都被封裝成fielderror,并被放入actioncontext中,并且校驗失敗后都返回“input”邏輯視圖,都可以使用<fielderror/>標簽輸出錯誤提示。. 如果開發(fā)者使用了struts2標簽

51、來生成表單,則表單標簽會自動輸出錯誤提示。. 以上校驗規(guī)則對action中所有處理邏輯有效。3.國際化提示消息l 為<message />標簽指定key屬性,該屬性指定的是國際化提示消息對應的key。. <message key="name.requried"/>. <message>$gettext("name.requried")</message>4.短路校驗器l <field-validator/>元素可以指定short-circuit屬性,這個屬性指定該校驗器是否是短路校驗器,默認值為

52、false。l 對應同一個字段內的多個校驗器,如果一個短路校驗器失敗,其他校驗器都根本不會繼續(xù)校驗。5.校驗文件的搜索規(guī)則l 一個action中可能包含多個處理邏輯,struts2允許為不同的處理邏輯指定不同的校驗規(guī)則l 例如:一個action既處理login又處理registerl 為校驗規(guī)則文件名增加actionalias來指定需要校驗的具體處理邏輯. actionclassname-actionalias-validation.xml. registeraction-login-validation.xmll struts2搜索校驗規(guī)則文件的順序為. baseactionclassnam

53、e-validation.xml. baseactionclassname -baseactionalias-validation.xml. actionclassname-validation.xml. actionclassname-actionalias-validation.xml. 自上而下,起作用的校驗規(guī)則是所有校驗規(guī)則之和,如果兩個校驗規(guī)則文件中指定的校驗規(guī)則沖突,則使用下面文件中的校驗規(guī)則6.內建校驗器l struts2提供了大量的內建校驗器,可以滿足大部分應用的校驗需求l 必填校驗器required:指定的字段必須有值<field name="name&quo

54、t;><field-validator type="required"><!配置必填校驗器 -><message>name must not be null</message><!指定校驗失敗的提示消息-></field-validator></field>l 必填字符串校驗器requirestring:字段值必須非空且長度大于0<field name="name"><field-validator type="requiredstrin

55、g"><param name=”trim”>true</param><message>name is required</message><!指定校驗失敗的提示消息-></field-validator></field>l 整數(shù)校驗器int:包括int,short,long,要求字段的整數(shù)值必須在指定的范圍內<field name="age"><field-validator type="int"><param name=”m

56、in”>5</param><param name=”max”>150</param><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 日期校驗器date:要求字段的日期必須在指定的范圍內<field name="birth"><field-validator type="date"><param name="min">1900

57、-01-01</param><param name="max">2050-02-21</param><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 字段表達式校驗器fieldexpression:要求指定字段滿足一個邏輯表達式,當表達式返回true時,通過校驗,否則校驗失敗。<field name="pass"><field-validator type="

58、fieldexpression"><param name=”expression”><!cdata(pass=rpass)></param><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 郵件地址校驗器email:要求字符串如果非空,則必須是合法的郵件地址<field name="email"><field-validator type="email"

59、><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 網(wǎng)址校驗器url:要求字符串如果非空,則必須是合法的url地址<field name="url"><field-validator type="url"><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 轉換校

60、驗器conversion:檢查被檢查字段在類型轉換過程中是否出現(xiàn)錯誤。<field name="age"><field-validator type="conversion"><!指定類型轉換失敗后,返回輸入頁面依然保留原來的錯誤輸入-><param name=”repopulatefield”>true</message><message></message><!指定校驗失敗的提示消息-></field-validator></field&

61、gt;l 字符串長度校驗器stringlength:被檢查字段的長度必須在指定的范圍之內<field name="user"><field-validator type="stringlength"><param name=”minlength”>4</param><param name=”maxlength”>20</param><message></message><!指定校驗失敗的提示消息-></field-validator></field>l 正則表達式校驗器regex:被檢驗字段是否匹配一個正則表達式<field name="user"><field-validator type="regex"><param name="expression"><!cdata(w4,25)></param><message></message><!指定校驗失

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論