版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Struts開發(fā)傳智博客struts開發(fā)TIP:為什么學(xué)習(xí)StrutsMVC設(shè)計(jì)模式基于MVC設(shè)計(jì)模式的Servlet+Jsp+JavaBean的WEB應(yīng)用程序的工作流程。基于Strus的web應(yīng)用程序的工作流程。為什么要用strus,它給我們帶來了什么?傳智博客struts開發(fā)TIP:Struts開發(fā)快速入門用戶注冊(使用struts完成),步驟:1、編寫register.jsp表單頁面,表單提交RegisterUser.do處理。2、在web工程中導(dǎo)入struts開發(fā)包,在web.xml文件中配置struts框架提供的ActionServlet,使其處理所有以.do為結(jié)尾的請求。3、在/WEB-INF/目錄下編寫ActionServlet工作時使用的配置文件struts-config.xml,配置當(dāng)ActionServlet收到RegisterUser.do請求時,調(diào)用一個名稱為RegisterUse的Action處理。4、編寫Action——RegisterUse,在其excute方法內(nèi)編碼,采用傳統(tǒng)方式獲取數(shù)據(jù),并調(diào)用service完成用戶注冊,然后轉(zhuǎn)發(fā)給相應(yīng)的jsp頁面。傳智博客struts開發(fā)TIP:讓struts自動封裝請求數(shù)據(jù)Struts的ActionServlet的功能非常強(qiáng)大,我們只需要在它的配置文件(struts-config.xml文件)中配置一下,它就可以自動把請求數(shù)據(jù)封裝到用戶指定的formbean中。并且,struts在調(diào)用開發(fā)人員編寫的action時,會把封裝了數(shù)據(jù)的formbean傳給action。這樣,可以省去開發(fā)人員在action中手工獲取客戶端提交的數(shù)據(jù),減輕編碼工作量。
<form-beans> <form-beanname="UserFormBean"type="cn.itcast.web.formbean.UserFormBean"> </form-bean></form-beans><action-mappings> <actionpath="/RegisterUser"type="cn.itcast.web.action.RegisterUser2" name="UserFormBean"> </action></action-mappings>注意:用于封裝數(shù)據(jù)的formbean要繼承struts的ActionForm。傳智博客struts開發(fā)TIP:讓struts轉(zhuǎn)發(fā)請求用戶在編寫action時,無須在action內(nèi)手工編碼進(jìn)行請求轉(zhuǎn)發(fā)。struts的ActionServlet在調(diào)用action.execute方法時,可以根據(jù)它的返回值,決定調(diào)用哪個JSP頁面響應(yīng)用戶請求。Action.execute方法的返回值A(chǔ)ctionForward代表一個轉(zhuǎn)發(fā)對象,struts的ActionServlet在收到Action.execute方法的返回值——ActionForward后,會取出該對象封裝的轉(zhuǎn)發(fā)地址,進(jìn)行請求轉(zhuǎn)發(fā)。ActionActionServletActionForwardJSP傳智博客struts開發(fā)TIP:讓struts根據(jù)配置實(shí)現(xiàn)轉(zhuǎn)發(fā)在struts的配置文件struts-config.xml文件中,可以配置forward標(biāo)簽,它用于封裝一個轉(zhuǎn)發(fā)地址。如:
<forwardname=“success"path="/success.jsp"/>Struts的ActionServlet在調(diào)用action時,會把a(bǔ)ction的配置信息封裝一個ActionMapping對象中,并傳遞給action。因此,開發(fā)人員在編寫action時,無須硬編碼指定轉(zhuǎn)發(fā)地址,可以通過ActionMapping對象,獲得配置文件中配置的轉(zhuǎn)發(fā)地址,從而實(shí)現(xiàn)轉(zhuǎn)發(fā)。如下圖:傳智博客struts開發(fā)TIP:讓struts根據(jù)配置實(shí)現(xiàn)轉(zhuǎn)發(fā)ActionServletactionActionMappingStruts-config.xml<actionpath="/RegisterUser" type="cn.itcast.web.action.RegisterUser" name="UserFormBean"> <forwardname="success"path="/success.jsp"/> <forwardname="failure"path="/success.jsp"/></action>請求封裝配置信息傳智博客struts開發(fā)*.doactionServletStruts-config.xmlactionformbeamactionMappingactionforwardjsp傳智博客struts開發(fā)Web服務(wù)器Web.xmlActionServletActionActionFrom1、web服務(wù)器收到請求后,把請求派發(fā)給struts的servlet進(jìn)行處理。2、ActionServlet讀取配置文件,根據(jù)請求的path創(chuàng)建相應(yīng)的action實(shí)例對象,3、根據(jù)配置文件創(chuàng)建封裝請求參數(shù)的ActionForm對象。4、創(chuàng)建代表當(dāng)前Action配置信息的ActionMapping對象。5、調(diào)用Action實(shí)例的execute方法,并把ActionForm和ActionMapping對象傳遞進(jìn)去。6、ActionServlet根據(jù)execute方法的返回值A(chǔ)ctionForward封裝的轉(zhuǎn)發(fā)信息,把請求轉(zhuǎn)發(fā)到相應(yīng)的JSP頁面顯示。Struts-config.xmlActionMappingActionForwardActionForwardJSP傳智博客struts開發(fā)TIP:讀struts源碼,分析struts工作流程Struts的控制器組件主要包括(課后一定讀源碼)ActionServlet對象:Struts的核心類RequestProcessor對象:由ActionServlet調(diào)用,負(fù)責(zé)處理用戶請求Action對象:用戶自己編寫的類Struts處理請求的流程:當(dāng)ActionServlet接收到HTTP請求后,在doGet或doPost方法中都會調(diào)用process()方法處理請求在ActionServlet的process()方法中一旦選擇了正確的子應(yīng)用模塊,就會調(diào)用RequestProcessor實(shí)例的process()方法來處理請求。在ActionServlet調(diào)用這個方法時,會把當(dāng)前的request和response對象傳給它RequestProcessor實(shí)例的process()方法調(diào)用ProcessActionCreate()方法,先判斷是否在Action緩存中存在Action實(shí)例,如果不存在,就創(chuàng)建一個Action實(shí)例,把它保存在Action緩存中RequestProcessor實(shí)例的process()方法調(diào)用Action實(shí)例的execute()方法傳智博客struts開發(fā)TIP:Struts配置文件常用屬性<action path=“/register“type=“cn.itcast.RegisterAction"name=“UserFormBean“scope="request"attribute=“myformbean"input="/register.jsp"
forward=“welcome.jsp“ include="welcome.jsp"
unknown=“true" parameter=“method” classname=“” validate="true"> <forwardname="hello" path="/success.jsp"/></action>指定action處理的地址指定處理請求的Action的完整類名指定使用哪個formbean封裝請求參數(shù)指定把formbean存放到哪個域?qū)ο笾?默認(rèn)session指定formbean存儲的key,不設(shè)默認(rèn)為name屬性的值指定把formbean的數(shù)據(jù)是由哪個頁面提供的,提供此屬性的目的在于formbean校驗(yàn)失敗時,程序方便跳回formbean的輸入頁面,顯示校驗(yàn)失敗信息。指定收到請求時,跳轉(zhuǎn)到相應(yīng)的jsp頁面,如果配置了此屬性,則action將不再被調(diào)用。相當(dāng)于ServletUI指定收到請求時,進(jìn)行頁面包含。如果action把該屬性設(shè)置為true,則它可以處理客戶機(jī)發(fā)出的所有無效的.do請求,默認(rèn)值為false,用于處理錯誤頁面配置action參數(shù),調(diào)用actioMapping.getParameter方法可以獲得這里配置的參數(shù)。<action>標(biāo)簽和所有的配置信息使用哪個對象封裝,默認(rèn)值為ActionMapping對象。請求參數(shù)封裝到formbean中后,是否讓struts自動調(diào)用formbean的validate方法進(jìn)行數(shù)據(jù)校驗(yàn)。默認(rèn)true傳智博客struts開發(fā)TIP:補(bǔ)充知識點(diǎn)嚴(yán)格按照MVC設(shè)計(jì)模式改進(jìn)注冊用例,需求:Web應(yīng)用程序若要嚴(yán)格按照MVC設(shè)計(jì)模式,所有客戶端的請求都需要發(fā)送給servlet處理,servlet再轉(zhuǎn)發(fā)到JSP顯示。因此,對于上述案例中的register.jsp頁面,也要禁止用戶直接訪問,而應(yīng)把它放在web-inf目錄中保護(hù)起來,由用戶訪問servlet后,servlet再轉(zhuǎn)發(fā)到register.jsp頁面上。傳統(tǒng)做法和Struts的做法。在首頁上掛上注冊功能<html:link>標(biāo)簽的好處:也有壞處使用<html:linkaction=“/action”/>不用關(guān)心web應(yīng)用程序的名稱。可以自動附加jsessionid參數(shù)進(jìn)行url重寫??梢詫?shù)信息進(jìn)行url編碼。<html:link>標(biāo)簽常用屬性:paramID、paramName、name、property。傳智博客struts開發(fā)TIP:補(bǔ)充知識點(diǎn)<html:link>標(biāo)簽示例:傳智博客struts開發(fā)TIP:借助struts完成表單校驗(yàn)表單數(shù)據(jù)提交后,在服務(wù)器端編程校驗(yàn)數(shù)據(jù)合法性,是一個很常見的需求。所以struts的ActionServlet在把數(shù)據(jù)封裝到formbean后,會自動調(diào)用formbean的validate方法對數(shù)據(jù)進(jìn)行校驗(yàn),并根據(jù)validate方法的返回值,決定轉(zhuǎn)發(fā)到哪個jsp頁面處理。Stuts的這種處理方式,可以讓開發(fā)人員少死點(diǎn)腦細(xì)胞,開發(fā)人員只需要在validate方法中寫代碼進(jìn)行數(shù)據(jù)校驗(yàn)就OK了,調(diào)用方法的事由struts的actionServlet去做了,并且,調(diào)用方法完后,如果有錯誤,跳轉(zhuǎn)的事,也由struts根據(jù)配置文件做了。注意:若想struts的actionServlet把數(shù)據(jù)封裝到formbean后,調(diào)用其validate方法,需要在struts-config.xml文件中把a(bǔ)ction的validate屬性設(shè)置為true,默認(rèn)值為true。傳智博客struts開發(fā)TIP:借助struts完成表單校驗(yàn)Struts調(diào)用formbean.validate方法后,其規(guī)則為:如果validate返回的ActionErrors對象為空或null,則Struts認(rèn)為表單驗(yàn)證通過,struts進(jìn)而繼續(xù)調(diào)用Action處理請求。如果validate返回的ActionErrors不為空,并且封裝了數(shù)據(jù),則認(rèn)為校驗(yàn)失敗,Struts將自動跳轉(zhuǎn)回表單輸入頁面。(input屬性指定)因此用戶若想校驗(yàn)失敗,只需要創(chuàng)建ActionErrors對象,并調(diào)用其方法:ActionErrors.add(Stringkey,ActionMessagemessage)
向ActionErrors對象中加入相應(yīng)的錯誤消息,返回給struts即可。示例代碼:傳智博客struts開發(fā)TIP:在JSP中顯示校驗(yàn)信息Struts在收到Formbean的返回值A(chǔ)ctionErrors后,會將其存儲到request域中,進(jìn)而帶給表單頁面,以便開發(fā)人員在表單頁面中顯示校驗(yàn)失敗的錯誤信息(這點(diǎn)建議讀讀struts的源碼)。在JSP頁面中開發(fā)人員可以編碼顯示錯誤信息:注意上面的代碼取request的errors對象時為什么用“org.apache.struts.action.ERROR”,這個值從何來?顯示消息時有需要在struts-config.xml文件中配置一個資源文件
<message-resourcesparameter="MessageResource"/>傳智博客struts開發(fā)TIP:使用<html:errors>顯示校驗(yàn)消息在JSP頁面中手工編碼獲取errors對象中保存的數(shù)據(jù)很麻煩,因此Struts編寫了<html:errors>標(biāo)簽,它用于封裝JSP頁面中用于獲取消息的java代碼。用戶使用<html:errors>標(biāo)簽可以很輕松獲取到errors中保存的校驗(yàn)信息,示例。<html:errors>標(biāo)簽也可以以ActionMessage中封裝了key為關(guān)鍵字,從資源文件中檢索數(shù)據(jù)予以顯示,如下所示:取消false,html:errors標(biāo)簽在顯示ActionMessage封裝的消息時,將以ActionMessage的key為關(guān)鍵字從資源文件中檢索數(shù)據(jù)顯示看看<html:errors>標(biāo)簽源碼,看errors標(biāo)簽是如何以關(guān)鍵字檢索資源文件數(shù)據(jù)的。注意:errors標(biāo)簽工作時需要資源文件。傳智博客struts開發(fā)TIP:ActionMessageActionMessage封裝消息的方式很靈活,后面兩個構(gòu)造函數(shù)中的value參數(shù),用于替換消息文本中的占位符:對應(yīng)資源文件內(nèi)容:errors.required={0}不能為空傳智博客struts開發(fā)TIP:練習(xí)完成對Register.jsp頁面的完整校驗(yàn)傳智博客struts開發(fā)TIP:練習(xí)privateStringusername;privateStringpassword;privateStringpassword2;privateStringgender;privateStringbirthday;privateStringincome;privateStringcity;privateString[]preference;privateStringemail;傳智博客struts開發(fā)TIP:練習(xí)注意事項(xiàng):日期校驗(yàn)不要采用DateFormat,而應(yīng)采用: DateLocaleConverterdlc=newDateLocaleConverter(); Dated=(Date)dlc.convert(this.birthday,"yyyy-mm-dd");對于頁面中的數(shù)據(jù),可采用枚舉類表示,對枚舉值的校驗(yàn)可采用如下類似方式:
Gender.valueOf(this.gender);傳智博客struts開發(fā)TIP:使用Struts標(biāo)簽完成表單數(shù)據(jù)回顯Struts提供了很多表單相關(guān)的自定義標(biāo)簽,如:<html:text><html:radio><html:select><html:option><html:checkbox><html:multibox><html:textarea>……這些標(biāo)簽除用于生成相應(yīng)的html標(biāo)簽外,最大的好處在于它在產(chǎn)生html標(biāo)簽時,會自動檢索相應(yīng)formbean的數(shù)據(jù)予以顯示,這樣,當(dāng)表單校驗(yàn)失敗時,表單數(shù)據(jù)的回顯struts幫我們干了,開發(fā)人員就不需要再編碼去取了。傳智博客struts開發(fā)TIP:使用Struts標(biāo)簽完成數(shù)據(jù)回顯使用Struts的html標(biāo)簽完成數(shù)據(jù)回顯時注意的問題:html標(biāo)簽回顯數(shù)據(jù)時,會以org.apache.struts.taglib.html.BEAN為關(guān)鍵字,從各個域中查找bean,找不到則拋空指針異常。所以使用html標(biāo)簽時域中須有以org.apache.struts.taglib.html.BEAN為關(guān)鍵字的對象。這個工作可以交給html:form標(biāo)簽做,html:form標(biāo)簽在執(zhí)行時,會查找域中已有的formbean,并以org.apache.struts.taglib.html.BEAN為關(guān)鍵字把formbean存在域中。如果html:form標(biāo)簽在域中找不到formbean,則html:form標(biāo)簽會實(shí)例化一個空bean,然后存儲到域中。因此,為了在頁面中使用struts的html標(biāo)簽回顯數(shù)據(jù),這些標(biāo)簽需要配合html:form標(biāo)簽使用。(查看html:form標(biāo)簽的源文件可以看到這點(diǎn))。對于復(fù)選框中的數(shù)據(jù),Html:checkbox標(biāo)簽不能完成數(shù)據(jù)回顯,復(fù)選框的數(shù)據(jù)回顯需要使用html:multibox。Struts中的html:password標(biāo)簽也會回顯數(shù)據(jù),如果不想password回顯,需要把其redisplay屬性置為false。補(bǔ)充:formbean的reset方法傳智博客struts開發(fā)html產(chǎn)生一個<html>標(biāo)簽。也包括來自于用戶會話中的language屬性form定義一個表單。Action和focus屬性是最有用的屬性checkbox產(chǎn)生一個檢查框字段file產(chǎn)生一個文件選擇輸入字段hidden產(chǎn)生一個隱藏字段option產(chǎn)生一個選擇項(xiàng)options產(chǎn)生一個選擇項(xiàng)列表password產(chǎn)生一個口令輸入字段radio產(chǎn)生一個單選輸入字段select產(chǎn)生一個選擇元素text產(chǎn)生一個文本輸入字段textarea產(chǎn)生一個html文本區(qū)域元素image產(chǎn)生一個圖像輸入字段button產(chǎn)生一個按鈕輸入字段cancel產(chǎn)生一個取消按鈕submit產(chǎn)生一個提交按鈕reset產(chǎn)生一個重新設(shè)定按鈕errors顯示錯誤消息img產(chǎn)生一個htmlimg標(biāo)簽傳智博客struts開發(fā)TIP:請求數(shù)據(jù)的中文亂碼問題解決方案:過濾器重寫ActonServlet重寫RequestProcessor傳智博客struts開發(fā)TIP:防止表單重復(fù)提交什么情況下會發(fā)生表單重復(fù)提交刷新網(wǎng)絡(luò)延時,多次點(diǎn)擊后退、前進(jìn)防止表單重復(fù)提交的原理表單應(yīng)由一個程序產(chǎn)生,程序在產(chǎn)生表單時:生成一個隨機(jī)值,并附在表單的一個隱藏輸入項(xiàng)中。把隨機(jī)值存儲在session域中。表單在提交時,服務(wù)器程序客戶機(jī)帶過來的隨機(jī)值和session域中保存的隨機(jī)值是否一致,如果一致則允許提交,否則認(rèn)為是重復(fù)提交。傳智博客struts開發(fā)TIP:使用struts防止表單重復(fù)提交Struts的<html:form>標(biāo)簽除了可以生成<form>標(biāo)簽、協(xié)助其它html標(biāo)簽完成數(shù)據(jù)回顯外,它還提供了防止表單重復(fù)提交的功能。<html:form>標(biāo)簽在生成表單時,會檢查session域中是否存在token,如果存在則自動使用token生成隱藏字段。Struts為方便開發(fā)人員生成token,在action中提供了saveToken方法,調(diào)用這個方法就可以在session域中保存一個token。Struts為方便開發(fā)人員在action中校驗(yàn)用戶是否為重復(fù)提交,因此它在action中也提供了isTokenValid方法,該方法會自動判斷表單是否為重復(fù)提交。防表單重復(fù)提交在struts中的做法:1、用戶先訪問Action,Action中調(diào)用saveToken方法,然后派發(fā)到表單頁面。2、在表單頁面中使用<html:form>標(biāo)簽,<html:form>標(biāo)簽會自動為表單生成一個帶隨機(jī)值的隱藏字段。3、在表單提交的Action中調(diào)用isTokenValid方法,就可以判斷出表單是否為重復(fù)提交,從而可以根據(jù)情況決定如何處理。isTokenValid方法返回true,則為允許提交,處理提交后,要記得調(diào)用reset清除token。傳智博客struts開發(fā)TIP:使用beanUtils轉(zhuǎn)換表單數(shù)據(jù)表單校驗(yàn)通過后,需把formbean的數(shù)據(jù)封裝到實(shí)體bean中,此時應(yīng)采用beanUtils框架,并注冊相應(yīng)的轉(zhuǎn)換器。為避免在多個Action中重復(fù)注冊轉(zhuǎn)換器,可采用listener在web應(yīng)用啟動時就注冊轉(zhuǎn)換器。傳智博客struts開發(fā)TIP:表單數(shù)據(jù)業(yè)務(wù)邏輯校驗(yàn)表單數(shù)據(jù)校驗(yàn)通過后,在action中可能會對數(shù)據(jù)進(jìn)行業(yè)務(wù)邏輯驗(yàn)證,例如檢查當(dāng)前注冊用戶是否已經(jīng)被別人注冊過了,這種驗(yàn)證稱為業(yè)務(wù)邏輯驗(yàn)證。業(yè)務(wù)邏輯驗(yàn)證如果失敗,其相應(yīng)的信息也應(yīng)顯示在頁面上。傳智博客struts開發(fā)TIP:表單數(shù)據(jù)業(yè)務(wù)邏輯校驗(yàn)很多網(wǎng)站也會提供如下圖所示的驗(yàn)證方式:傳智博客struts開發(fā)TIP:使用struts修改數(shù)據(jù)程序取出數(shù)據(jù)庫中的數(shù)據(jù),顯示在一個表單頁面上,以便于用戶修改數(shù)據(jù),這也是開發(fā)中經(jīng)常需要實(shí)現(xiàn)的功能。實(shí)現(xiàn)此功能需要注意的問題:為回顯數(shù)據(jù)方便,通常在頁面中都會使用struts的html標(biāo)簽。而程序調(diào)用dao取出的數(shù)據(jù)通常放在實(shí)體bean中,要想在頁面中使用html標(biāo)簽取出數(shù)據(jù)顯示,此時應(yīng)把實(shí)體bean的數(shù)據(jù)又轉(zhuǎn)換到表單bean中,對于復(fù)雜類型的數(shù)據(jù),此時就需要在beanutils框架中注冊數(shù)據(jù)的雙向轉(zhuǎn)換器了。數(shù)組類型是比較特殊的類型,進(jìn)行類型判斷是可以采用如下方式:clazz.equals(Object[].class)獲取到的Bean為在頁面中顯示,還需要把bean存放在request域中,存放的關(guān)鍵字可以使用action上配置的formbean的名稱。注意:在action如果向request域存formbean,這個formbean想在jsp頁面中顯示,配置文件中的scope要配成request,不然頁面會先從session找,而session中有一個空bean。傳智博客struts開發(fā)TIP:struts文件上傳文件的上傳操作:JSP頁面:表單使用POST提交方式,添加enctype="multipart/form-data"屬性ActionForm中使用org.apache.struts.upload.FormFile
類型定義文件字段導(dǎo)入struts-1.3.8\lib\commons-和commons-io-1.1.jar在Action的execute()方法中使用InputStreamis=();方法得到文件的輸入流再使用io的方法對文件進(jìn)行上傳操作.傳智博客struts開發(fā)TIP:struts文件上傳注意事項(xiàng)在formbean中定義FormFile類型的成員變量接收瀏覽器上傳的文件。只要在Formbean中定義一個FormFile類型的變量,struts框架會自動把文件上傳的內(nèi)容變成FormFile對象并注入進(jìn)來,即使沒有上傳文件,對應(yīng)的FormFile變量也會有值,只是得到文件名為””和文件大小為0。中文文件上傳問題過濾器解決設(shè)置上傳文件的最大值:在配置文件里面配置注意:如果上傳文件超出了最大值,struts不會把上傳數(shù)據(jù)封裝到FormFile中,即c為null,程序根據(jù)FormFile是否為空,就可提示用戶文件是否超出大小。多文件上傳問題DownloadAction提供下載。傳智博客struts開發(fā)TIP:DispatchAction需求:客戶端每個請求都對應(yīng)服務(wù)器端一個Action,會導(dǎo)致服務(wù)器端action過多,維護(hù)困難。在Struts中允許多個請求對應(yīng)一個Action,例如對Book對象的增刪改查操作,可以交給一個Action處理,Action根據(jù)請求地址中附加的參數(shù)信息,再派發(fā)到相應(yīng)的方法,例:
<html:linkaction=“/BookAction?method=add”>增加書籍</html:link> <html:linkaction=“/BookAction?method=update”>修改書籍</html:link> <html:linkaction=“/BookAction?method=find”>查找書籍</html:link> <html:linkaction=“/BookAction?method=delete”>刪除書籍</html:link>傳智博客struts開發(fā)TIP:DispatchActionStruts中的DispatchAction提供了此類功能,它可以根據(jù)請求的參數(shù),調(diào)用不同的方法,但要注意的是開發(fā)人員在聲明參數(shù)對應(yīng)的方法時,方法的簽名需要與execute()方法一致。例:注意Struts中的DispatchAction并不知道用戶的參數(shù)是以什么名稱提交的,因此若想DispatchAction能正常調(diào)用到用戶自定義的方法,用戶需要在action的配置文件中通過parameter屬性告訴給struts。課后看看源碼:分析DispatchAction是如何調(diào)用用戶自定義方法的傳智博客struts開發(fā)TIP:DispatchAction注意事項(xiàng):DispatchAction是Action的子類,它重寫了Action的execute方法,因此用戶繼承DispatchAction時,若想使用DispatchAction提供的分發(fā)功能,切記不可覆蓋其execute方法。DispatchAction位于struts的擴(kuò)展包中,即struts-1.3.8\lib\struts-extras-1.3.8.jar。傳智博客struts開發(fā)TIP:MappingDispatchActionMappingDispatchAction是DispatchAction的子類,它提供的功能和DispatchAction功能類似,它也允許多個請求對應(yīng)一個Action,但它的實(shí)現(xiàn)方式更加靈活,如圖:MappingDispatchAction可以配置到多個地址上,比DispatchAction更加直觀,并且也可使用不同的formbean,但缺點(diǎn)是使配置文件過于復(fù)雜。補(bǔ)充知識點(diǎn):讓struts擁有多個配置文件。傳智博客struts開發(fā)TIP:動態(tài)FormBeanStruts允許開發(fā)人員在配置文件中聲明一個formbean,而無須手工針對每一個表單設(shè)計(jì)一個Formbean。步驟:
1、配置一個<form-bean>元素,將type屬性設(shè)置為DynaActionForm。
2、<form-bean>的<form-property>子元素用來設(shè)置動態(tài)ActionForm的屬性。
<form-property>元素的name屬性指定屬性名,type指定屬性類型
<form-beanname="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-propertyname=“username"type="java.lang.String"/> <form-propertyname=“birthday"type="java.lang.String"/> <form-propertyname=“preference"type="java.lang.String[]"/> <form-propertyname=“email"type="java.lang.String"/> </form-bean> 3、使用DynaActionForm類的publicObjectget(Stringname);訪問字段的值傳智博客struts開發(fā)TIP:集成FckEditorFCKeditor是一款非常優(yōu)秀的HTML在線編輯器,功能也可以定制.也支持多種瀏覽器,遵循LGPL版權(quán)。最新版本的FCKeditor(2.3.2)同時兼容絕大多數(shù)主流瀏覽器,包括:IE5.5及以上版本(windows),火狐Firefox1.0及以上版本,遨游Mozilla1.3及以上版本,網(wǎng)景7.0及以上版本。集成步驟參看fckeditor的例程1、在web工程下新建JS目錄,并拷貝fckeditor到該目錄中。2、導(dǎo)入fckeditor.js文件。3、在表單中加入如下代碼:<scripttype="text/javascript">varoFCKeditor=newFCKeditor(‘resume’);//重要,fckeditor產(chǎn)生的輸入項(xiàng)名稱oFCKeditor.BasePath='${pageContext.request.contextPath}/js/fckeditor/';oFCKeditor.Height=300;oFCKeditor.Value='';oFCKeditor.Create();</script>數(shù)據(jù)回顯問題傳智博客struts開發(fā)TIP:Struts-Validate框架Validator(驗(yàn)證器)框架是一個Struts插件,它支持采用聲明式的方式對表單進(jìn)行校驗(yàn),而不需要用戶編寫一行Java代碼。集成validate框架,Struts那哥們他幫你校驗(yàn)了表單,而且客戶端也校驗(yàn),比如javascript校驗(yàn)他也幫你校驗(yàn)了使用Validator框架的好處:更好的可維護(hù)性校驗(yàn)實(shí)現(xiàn)標(biāo)準(zhǔn)化正確的實(shí)現(xiàn)更少的代碼重復(fù)自動客戶端驗(yàn)證傳智博客struts開發(fā)TIP:Struts-Validate框架解壓Struts的例子struts-cookbook-1.3.8,部署到web服務(wù)器中,查看例子體驗(yàn)。在工程中集成validate框架,你需要查看org.apache.struts.validator包下的validator-rules.xml文件,它是validate框架的校驗(yàn)規(guī)則文件,這個文件說明了如何在struts工程中集成validate框架:1、在struts-config.xml文件中配置validate插件。2、創(chuàng)建資源文件,并復(fù)制validate框架工作需要的信息。3、把struts-cookbook-1.3.8例程自帶的、validate框架的配置文件validation.xml,復(fù)制到當(dāng)前web工程的WEB-INF目錄下。validate框架環(huán)境搭建好后,就可以采用配置的方式對formbean的屬性進(jìn)行校驗(yàn),但需要注意:1、formbean要想使用validate框架校驗(yàn),不能直接繼承ActionForm,而要繼承其子類ValidatorForm。2、如果是DynaActionForm,就必須要繼承DynaValidatorForm傳智博客struts開發(fā)TIP:Struts-Validate框架(valiate-rule)……<form-validation><global><validatorname="required"classname="org.apache.struts.validator.FieldChecks"method="validateRequired"methodParams="java.lang.Object,mons.validator.ValidatorAction,mons.validator.Field,org.apache.struts.action.ActionMessages,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年洗車場綜合服務(wù)及品牌形象轉(zhuǎn)讓合同3篇
- 2025年度遠(yuǎn)程醫(yī)療技術(shù)服務(wù)合同4篇
- 二零二四學(xué)年度學(xué)生寄宿托管生活管理合同3篇
- 二零二五版?zhèn)€人房屋買賣合同模板3篇
- 2025版綠色能源煤炭貿(mào)易合同范本4篇
- 2025年水泥產(chǎn)品質(zhì)量檢測與評估合同3篇
- 全新2025年度特許經(jīng)營合同9篇
- 二零二五年度O2O健康養(yǎng)生中心服務(wù)合同2篇
- 二零二五年度環(huán)保節(jié)能設(shè)備銷售合同要素條款確認(rèn)書4篇
- 二零二五版河南建筑工程保險合同3篇
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 2023年上海英語高考卷及答案完整版
- 西北農(nóng)林科技大學(xué)高等數(shù)學(xué)期末考試試卷(含答案)
- 金紅葉紙業(yè)簡介-2 -紙品及產(chǎn)品知識
- 《連鎖經(jīng)營管理》課程教學(xué)大綱
- 《畢淑敏文集》電子書
- 頸椎JOA評分 表格
- 員工崗位能力評價標(biāo)準(zhǔn)
- 定量分析方法-課件
- 朱曦編著設(shè)計(jì)形態(tài)知識點(diǎn)
- 110kV變電站工程預(yù)算1
評論
0/150
提交評論