版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Struuts 培訓(xùn)教教程概述在這份教教程中,我我將介紹紹strrutss框架和和與sttrutts框架架有關(guān)的的技術(shù)。該教程程主要分分為以下下幾部分分:MVC模模式Struuts的的概念和和體系結(jié)結(jié)構(gòu)Struuts中中主要技技術(shù)的介介紹用jBuuildder88開發(fā)sstruuts應(yīng)應(yīng)用程序序MVC模模式所謂的MMVC模模式,即即 模型型視圖控制器器(moodellvieewconntroolleer)模模式。其其結(jié)構(gòu)圖圖如下:ViewControllerModelModeel端在MVCC中,模模型是執(zhí)執(zhí)行某些些任務(wù)的的代碼,而而這部分分代碼并并沒有任任何邏輯輯決定它它對用戶戶端的表表示方法
2、法。Moodell只有純純粹的功功能性接接口,也也就是一一系列的的公開方方法,通通過這些些公開方方法,便便可以取取得模型型端的所所有功能能。在sstruuts框框架中,MModeel端是是用Acctioon和EEJB技技術(shù)實現(xiàn)現(xiàn)的。Vieww端在MVCC模式里里,一個個Moddel可可以有幾幾個Viiew端端,而實實際上復(fù)復(fù)數(shù)的VVieww端是使使用MVVC的原原始動機機。使用用MVCC模式可可以允許許多于一一個的VVieww端存在在,并可可以在需需要的時時候動態(tài)態(tài)的登記記上所需需要的VVieww.Conttrolllerr端MVC模模式的視視圖端是是與MVVC的控控制器結(jié)結(jié)合使用用的。當(dāng)當(dāng)用
3、戶端端與相應(yīng)應(yīng)的視圖圖發(fā)生交交互時,用用戶可以以通過視視窗更新新模型的的狀態(tài),而而這種更更新是通通過控制制器端進(jìn)進(jìn)行的。控制器器端通過過調(diào)用模模型端的的方法更更改其狀狀態(tài)值。與此同同時,控控制器端端會通知知所有的的登記了了的視圖圖刷新顯顯示給用用戶的表表示。在現(xiàn)在的的j2eee應(yīng)用用中,我我們在開開發(fā)weeb sservver時時基本上上都是采采用MVVC模式式來開發(fā)發(fā)的,jj2eee規(guī)范也也相應(yīng)的的為我們們提供了了技術(shù)支支持,請請看下圖圖:Web Server 2 6 5 BrowserActionServletEJB Server 1 2 3 5 44JSP 7 11 瀏覽覽器用戶戶執(zhí)行s
4、servvlett的dooGett方法; 22 seervllet根根據(jù)不同同的請求求,將他他們分發(fā)發(fā)到不同同的Acctioon中。在這里里,seervllet的的作用就就好比是是conntroolleer; 33 Acctioon調(diào)用用EJBB層的商商務(wù)邏輯輯程序處處理用戶戶的請求求; 44 EJJB層返返回給AActiion處處理結(jié)果果; 55 Acctioon 對對將處理理結(jié)果返返回給sservvlett。在這這里,可可以將AActiion 和 EEJB共共同看成成是moodell 66 seervllet將將信息發(fā)發(fā)送給JJSP頁頁面。這這里的JJSP就就相當(dāng)于于vieew; 77 b
5、rrowsser用用戶瀏覽覽JSPP頁面;大家可以以看到,JJSP、serrvleet和EEJB各各自在MMVC模模式中所所起到的的作用。使用MVVC的優(yōu)優(yōu)點如下下:可靠性(Reliability):將表示層和處理層完全分開,可以在不重新編譯model和controller的情況下修改view層。復(fù)用性和和適應(yīng)性性(reeusee & adaaptaabillityy):MMVC使使你可以以使用多多種viiew去去訪問相相同的mmodeel??焖匍_發(fā)發(fā)(Raapidd deeplooymeent):因為MMVC清清晰的將將表示層層和處理理層分開開,所以以使得不不同的程程序員可可以各司司其則,增
6、增加開發(fā)發(fā)速度。可維護(hù)性性(Maainttainnabiilitty):清晰的的分層同同樣使得得代碼清清晰、程程序的可可維護(hù)性性提高。Struuts的的概念和和體系結(jié)結(jié)構(gòu)概述 sttrutts源自自于appachhe的jjakaartaa工程,是是一個開開源代碼碼工程( HYPERLINK / /)?,F(xiàn)在struts最新的版本是1.2,而jBuilder自帶的版本是1.02。struts是一個完全遵照MVC模型設(shè)計的,web層的框架。struuts與與MVCC模式 sttrutts是一一個完全全遵照MMVC模模型設(shè)計計的,wweb層層的框架架。在sstruuts中中,使用用到了jjsp、jav
7、vabeean、tagglibb和seervllet技技術(shù)。下下圖是一一個描述述了sttrutts框架架的應(yīng)用用請求的的執(zhí)行路路徑:這個過程程大體可可以被分分成5個個基本步步驟: 1 vvieww發(fā)起一一個請求求2 AcctioonSeervllet(sservvlett技術(shù)實實現(xiàn))接接受這個個請求,它它根據(jù)一一份xmml文件件來得到到處理這這個請求求的Acctioon對象象,并將將請求發(fā)發(fā)送給這這個Acctioon對象象。3 Acctioon對象象接受這這個請求求,并調(diào)調(diào)用moodell(EJJB)去去處理這這個請求求,并將將處理結(jié)結(jié)果返回回給AcctioonSeervllet。4 Acct
8、ioonSeervllet根根據(jù)Acctioon 的的返回結(jié)結(jié)果中的的信息,決決定將處處理結(jié)果果返回給給對應(yīng)的的vieew。5 viiew得得到處理理結(jié)果,并并將他顯顯示給用用戶。THE MODDELStruuts框框架提供供Acttionn作為mmodeel的一一種實現(xiàn)現(xiàn)。Acctioon 是是繼承oorg.apaachee.sttrutts.aactiion. Acctioon的類類,他用用來處理理用戶的的請求,并并將處理理結(jié)果封封裝在HHttppSerrvleetReequeest中中,返回回給AcctioonSeervllet。THE VIEEW SStruuts用用JSPP、taag
9、liib和jjavaabeaan技術(shù)術(shù)去實現(xiàn)現(xiàn)vieew。JJSP用用來顯示示視圖;strrutss通過使使用自己己定義的的一組ttagllib來來控制請請求的流流程、輔輔助處理理結(jié)果的的顯示;javvabeean用用來保存存用戶在在JSPP頁面中中的輸入入數(shù)據(jù),他他用來方方便的向向Acttionn傳遞用用戶輸入入數(shù)據(jù)。THE CONNTROOLLEERStruuts用用orgg.appachhe.sstruuts.acttionn.AcctioonSeervllet去去實現(xiàn)cconttrolllerr的功能能。這個個serrvleet接收收所有JJSP頁頁面發(fā)送送的請求求,根據(jù)據(jù)一份配配置文
10、件件得到處處理相應(yīng)應(yīng)用戶請請求的AActiion,并調(diào)用用Acttionn去處理理用戶的的請求。當(dāng)Acctioon處理理結(jié)束后后,AcctioonSeervllet接接受處理理結(jié)果,并并根據(jù)同同樣的配配置文件件將處理理結(jié)果發(fā)發(fā)送當(dāng)相相應(yīng)的JJSP頁頁面。Struuts主主要技術(shù)術(shù)介紹相關(guān)技術(shù)術(shù)學(xué)習(xí)Sttrutts,首首先要了了解一下下以下相相關(guān)技術(shù)術(shù)。(有有些部分分只提供供相關(guān)的的資料鏈鏈接,不不做講解解)。JavaaBeaans大多數(shù)JJavaaBeaans是是由JaavaBBeanns來編編寫的. HYPERLINK /products/javabeans/docs/ The JavvaB
11、eeanss Coompoonennt AArchhiteectuure Doccumeentaatioon ppagee att jaava.sunn.coom, inccluddingg a linnk tto ddownnloaad tthe HYPERLINK /products/javabeans/docs/spec.html JavvaBeeanss 1.01 Speecifficaatioon HYPERLINK /docs/books/tutorial/javabeans/index.html The JavvaBeean Traail in thee Jaava Tuttor
12、iial HYPERLINK /webservices/docs/1.0/tutorial/doc/JSPBeans.html JavaaBeaans Commponnentts iin JJSP Pagges in thee Jaava Webb Seerviicess Tuutorriall 反射和內(nèi)內(nèi)省反射機制制是一種種決定一一個對象象哪些成成員域和和成員方方法被采采用的過過程。內(nèi)內(nèi)省技術(shù)術(shù)是反射射機制的的一種特特殊機制制,Sttruccts使使用內(nèi)省省技術(shù)轉(zhuǎn)轉(zhuǎn)換HTTTP參參數(shù)為JJavaaBeaan的屬屬性,讀讀取JaavaBBeann屬性裝裝配HTTML字字段。 HYPERLINK
13、 /docs/books/tutorial/reflect/ The Refflecctioon TTraiil HYPERLINK /products/javabeans/docs/spec.html Chappterr 8 of thee JaavaBBeanns AAPI Speecifficaatioon屬性文件件和ReesouurceeBunndlees屬性文件件屬性文件件主要用用來設(shè)置置程序?qū)賹傩?,屬屬性文件件的后綴綴名為.prooperrtiees,屬屬性文件件的格式式類似于于以下內(nèi)內(nèi)容:bookk=myy ccompputeer bbookk pagees=1120authho
14、rss=zhhfsemiinarr=122使用屬性性文件javaa.uttil包包中Prropeertiies類類用來管管理一個個Keyy/vaaluee對,PPropperttiess類提供供了以下下方法:loadd()方方法:LLoaddingg kkey/vallue paiirs intto aa PPropperttiess obbjecct forrm aa Sttreaam 從從一個輸輸入流中中加載getPProppertty()方法:Rettrieevinng aa vaaluee frrom itss keey 通過過關(guān)鍵字字來獲得得值listt()方方法:LListting
15、g thhe kkeyss annd ttheiir vvaluues 列舉舉Savee()方方法:SSaviing thee prropeertiies to a sstreeam 保存存屬性具體例子子如下impoort javva.uutill.*;impoort javva.iio.*;publlic claass useeProoperrtiees pubblicc sttatiic vvoidd maain(Strringg arggs)trryProoperrtiees ddefaaulttProops=neww Prropeertiies();FilleInnputtStrrea
16、mm ffilee=neew FFileeInpputSStreeam(operrtiees);defaaulttProops.loaad(ffilee);fille.cclosse();defaaulttProops.lisst(SSysttem.outt);Systtem.outt.prrinttln(geetPrropeertyy(Sttrinngkeey,SStriingddefaaultt)= +deffaulltPrropss.geetPrropeertyy(bbookk);FiileOOutpputSStreeam outt=neew FFileeOuttputtStrreamm
17、(aappPPropperttiess);defaaulttProops.stoore(outt,noo coommeent);out.cloose();ccatcch(EExceeptiion e)ee.prrinttStaackTTracce();使用本地地化數(shù)據(jù)據(jù)使用本地地化數(shù)據(jù)據(jù),需要要建立多多個屬性性文件,假假設(shè)我們們系統(tǒng)中中需要支支持德文文和法文文,我們們的默認(rèn)認(rèn)屬性文文件為LLabeelsBBoperrtiees文件件,那么么我們需需要建立立德文和和法文所所對應(yīng)的的屬性文文件:LabeelBuundlle_dde.ppropperttiessLabeelBuundlle_ffr.
18、ppropperttiess# LaabellsBuundlle.ppropperttiess 內(nèi)容容s1 = coompuuterrs2 = diisks3 = moonittors4 = keeybooardd# LaabellsBuundlle_dde.ppropperttiess內(nèi)容s1 = Coompuuterrs2 = Pllatttes3 = Moonittors4 = Taastaaturr# LaabellsBuundlle_ffr.ppropperttiess內(nèi)容s1 = Coompuuterrfrs2 = Pllatttefrrs3 = Moonittorffrs4 =
19、TaastaaturrfrResooureeBunndlee和Loocalle通過ReesouurceeBunndlee結(jié)合LLocaale對對象可以以選擇屬屬性文件件:下面我們們給一個個具體的的例子impoort javva.uutill.*;impoort javva.iio.*;publlic claass RessourrceBBunddleDDemoo pubblicc sttatiic vvoidd maain(Strringg arggs) /采用了了德國設(shè)設(shè)置Locaale cuurreentLLocaal=LLocaale.GERRMANN;ResoourcceBuundll
20、e llabeels=RessourrceBBunddle.gettBunndlee(LLabeelsBBunddle,cuurreentLLocaal);Sttrinng mmyVaaluee=laabells.ggetSStriing(s22); Sysstemm.ouut.pprinntlnn( Loocall=GEERMAAN ; S22= +myyVallue);/采用了了法國設(shè)設(shè)置currrenttLoccal=Loccalee.FRRENCCH; llabeels=RessourrceBBunddle.gettBunndlee(LLabeelsBBunddle,cuurreent
21、LLocaal); myyVallue=labbelss.geetSttrinng(s2);Syysteem.oout.priintlln( LLocaal= FREENCHH ; S2= +myVValuue);更多的內(nèi)內(nèi)容可以以查看: HYPERLINK /docs/books/tutorial/essential/attributes/properties.html Usinng PPropperttiess too Maanagge PProggramm Atttriibuttes in Thee Jaava Tuttoriial HYPERLINK /docs/books/tutor
22、ial/i18n/resbundle/concept.html Abouut tthe RessourrceBBunddle Claass in thee Jaava Tuttoriial JSP和和JSPP標(biāo)簽庫庫Jsp中中提供了了一些標(biāo)標(biāo)準(zhǔn)的標(biāo)標(biāo)簽:useBBeann,seetPrropeertyy/geetPrropeertyy,inncluude,forrwarrd,ppluggin。使用例子子如:這些標(biāo)標(biāo)準(zhǔn)的標(biāo)標(biāo)簽,為為操作JJavaaBeaan和相相應(yīng)請求求等提供供便利,除除此之外外,JSSP技術(shù)術(shù)允許我我們自己己封裝特特有的標(biāo)標(biāo)簽,來來簡化應(yīng)應(yīng)用程序序開發(fā)。有經(jīng)驗驗的開發(fā)發(fā)者可以
23、以利用標(biāo)標(biāo)簽處理理表單,訪訪問數(shù)據(jù)據(jù)庫或其其他企業(yè)業(yè)服務(wù)(如如e-mmaill或目錄錄服務(wù)等等)。標(biāo)簽的主主要技術(shù)術(shù)可以在JJSP頁頁面中設(shè)設(shè)置標(biāo)簽簽的參數(shù)數(shù)??梢栽L問問JSPP頁面中中所有的的對象??梢垣@得得JSPP頁面的的Ressponnse對對象。標(biāo)簽之間間互相通通訊。標(biāo)簽可以以被嵌套套,實現(xiàn)現(xiàn)標(biāo)簽的的多層使使用。標(biāo)簽的使使用為了能夠夠在jssp頁面面中使用用一個標(biāo)標(biāo)簽,我我們需要要變現(xiàn)一一個實現(xiàn)現(xiàn)了TaagSuuppoort類類的jaava程程序,然然后通過過tldd文件,定定義該標(biāo)標(biāo)簽的屬屬性,然然后通過過webb.xmml聲明明這個ttld文文件,最最后才可可以在JJSP頁頁面中使
24、使用標(biāo)簽簽的。下面我還還是根據(jù)據(jù)例子來來簡單講講一下詳細(xì)代碼碼下srrc/ttaguuse目目錄下。定制標(biāo)簽簽類packkagee coom.zzhfeelvaa.taag;impoort javvax.serrvleet.jjsp.*;impoort javvax.serrvleet.jjsp.taggextt.*;impoort javva.iio.*;/* * 一一個顯示示當(dāng)前時時間的標(biāo)標(biāo)簽*/publlic claass CurrrenntTiimeTTag exttendds TTagSSuppportt puubliic iint doSStarrtTaag() tryy JspW
25、Writter outt = paggeCoonteext.gettOutt(); jjavaa.uttil.Datte ddt = neew jjavaa.uttil.Datte(SSysttem.currrenntTiimeMMilllis();out.priint(dt.gettHouurs()+:+dt.gettMinnutees()+:+ddt.ggetSSecoondss(); ccatcch(IIOExxcepptioon iioe) SSysttem.outt.prrinttln(Errrorr inn CuurreentTTimeeTagg: + ioee); retturn
26、n(SKKIP_BODDY); 編寫標(biāo)簽簽定義文文件放于WWEB-INFFtaagliibmmytaagliib.ttld 11.0 1.1 currrennt ttimee A ttag libbrarry ffor shoow ccurrrentt tiime CurrrenntTiime coom.zzhfeelvaa.taag.CCurrrenttTimmeTaag EMMPTYY shoow ccurrrentt tiime 在webb.xmml中進(jìn)進(jìn)行配置置一個網(wǎng)頁頁應(yīng)用程程序要在在webb.xmml中聲聲明他要要使用的的標(biāo)簽庫庫: my-ttagllib /WWEB-INFF/t
27、aagliib/mmytaagliib.ttld 簡單標(biāo)簽簽的使用用以上配置置做好之之后,就就可以在在JSPP頁面中中使用標(biāo)標(biāo)簽了:currrentttimme.jjsp顯示當(dāng)當(dāng)前時間間 - JSPP/TaagLiib顯示當(dāng)當(dāng)前時間間 - JSPP/TaagLiibStruuts中中真正將將標(biāo)簽庫庫應(yīng)用了了起來,大大家可以以從中看看到標(biāo)簽簽庫的強強大功能能。更多的內(nèi)內(nèi)容可以以查看: HYPERLINK /products/jsp/ The JavvaSeerveer PPagees TTechhnollogyy paage at m HYPERLINK /products/jsp/downlo
28、ad/ The JSPP 1.1 aand 1.22 Sppeciificcatiionss doownlloadd paage at m HYPERLINK /webservices/docs/1.0/tutorial/doc/JSPIntro.html JavaaSerrverr Paagess Teechnnoloogy in thee Jaava Webb Seerviicess Tuutorriall HYPERLINK /webservices/docs/1.0/tutorial/doc/JSPTags.html Custtom Taggs iin JJSP Pagess inn
29、thhe JJavaa Weeb SServvicees TTutooriaalXML相相關(guān)技術(shù)術(shù)這里,相相關(guān)的內(nèi)內(nèi)容非常常多,而而且很重重要,相相信大家家也都熟熟悉XMML技術(shù)術(shù),由于于時間關(guān)關(guān)系,這這里就不不做講述述了。主要技術(shù)術(shù)Struuts體體系結(jié)構(gòu)構(gòu)ClientIE or NetscapeControllerActionServletBusiness LogicActionModelJavaBean or EJBViewJSPHTTPRequestAction FormHTTPResponseStruts-config.xmlStruts體系圖控制:通通過Sttrutts體系系圖大家
30、家可以看看到有一一個XMML文件件Strrutss-coonfiig.xxml,與與之相關(guān)關(guān)聯(lián)的是是Conntroolleer,在在Strrutss中,承承擔(dān)MVVC中CConttrolllerr角色的的是一個個Serrvleet,叫叫ActtionnSerrvleet。AActiionSServvlett是一個個通用的的控制組組件。這這個控制制組件提提供了處處理所有有發(fā)送到到Strrutss的HTTTP請請求的入入口點。它截取取和分發(fā)發(fā)這些請請求到相相應(yīng)的動動作類(這這些動作作類都是是Acttionn類的子子類)。另外控控制組件件也負(fù)責(zé)責(zé)用相應(yīng)應(yīng)的請求求參數(shù)填填充 AActiion Froo
31、m(通通常稱之之為FrromBBeann),并傳傳給動作作類(通通常稱之之為AcctioonBeean)。動作類實現(xiàn)核心商業(yè)邏輯,它可以訪問java bean 或調(diào)用EJB。最后動作類把控制權(quán)傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。視圖:主主要由JJSP生生成頁面面完成視視圖,SStruuts提提供豐富富的JSSP 標(biāo)標(biāo)簽庫: Httml,BBeann,Loogicc,Teempllatee等,這這有利于于分開表表現(xiàn)邏輯輯和程序序邏輯。模型:模模型以一一個或多多個jaava beaan的形形式存在在。這些些beaan分為為三類:A
32、cttionn Foorm、Acttionn、JaavaBBeann orr EJJB。AActiion Forrm通常常稱之為為FormBeann,封裝裝了來自自于Clliennt的用用戶請求求信息,如如表單信信息。AActiion通通常稱之之為AcctioonBeean,獲獲取從AActiionSSevllet傳傳來的FFormBeann,取出出FormBeann中的相相關(guān)信息息,并做做出相關(guān)關(guān)的處理理,一般般是調(diào)用用Javva BBeann或EJJB等。流程:在在Strrutss中,用用戶的請請求一般般以*.do作作為請求求服務(wù)名名,所有有的*.do請請求均被被指向AActiionSSe
33、vllet,AActiionSSevllet根根據(jù)Sttrutts-cconffig.xmll中的配配置信息息,將用用戶請求求封裝成成一個指指定名稱稱的FormBeann,并將將此FormBeann傳至指指定名稱稱的AcctioonBeean,由由ActtionnBeaan完成成相應(yīng)的的業(yè)務(wù)操操作,如如文件操操作,數(shù)數(shù)據(jù)庫操操作等。每一個個*.ddo均有有對應(yīng)的的FormBeann名稱和和ActtionnBeaan名稱稱,這些些在Sttrutts-cconffig.xmll中配置置。Struuts的的基本組組件包整個sttrutts大約約有155包,近近2000個類所所組成,而而且數(shù)量量還在不
34、不斷的擴擴展。在在此我們們不能一一一介紹紹,只能能列舉幾幾個主要要的簡要要的介紹紹一下。下表說說明了目目前sttrutts aapi中中基本的的幾個組組件包,包包括acctioon,aactiionss,taagliib。圖圖片(55)則顯顯現(xiàn)了這這幾個組組件包之之間的關(guān)關(guān)系。其其中acctioon是整整個sttrutts fframmewoork的的核心org.apaachee.sttrutts.aactiion基本上,控控制整個個strrutss frrameeworrk的運運行的核核心類、組件都都在這個個包中,比比如我們們上面提提到的控控制器AActiionSServvlett,Acct
35、ioon,AActiionFFormm,AcctioonMaappiing等等等。sstruuts11.1比比1.00多了 DynnaAcctioonFoorm 類。增增加了動動態(tài)擴展展生成FFormmBeaan功能能org.apaachee.sttrutts.aactiionss這個包是是主要作作用是提提供客戶戶的htttp請請求和業(yè)業(yè)務(wù)邏輯輯處理之之間的特特定適配配器轉(zhuǎn)換換功能,而而1.00版本中中的部分分動態(tài)增增刪FrromBBeann的類,也也在sttrutts1.1中被被Acttionn包的DDynaaActtionnForrm組件件所取代代org.apaachee.sttrutts
36、.ttagllib這不是一一個包,而而是是一一個客戶戶標(biāo)簽類類的集合合。下面面包括BBeann Taags,HTMML TTagss,Loggic Taggs,Nesstedd Taags,Temmplaate Taggs這幾幾個用于于構(gòu)建用用戶界面面的標(biāo)簽簽類。 Struts的基本組件關(guān)系圖對于Sttrutts 如如何控制制、處理理客戶請請求,讓讓我們通通過對sstruuts的的四個核核心組件件介紹來來具體說說明。這這幾個組組件就是是:AcctioonSeervllet。Acttionn Cllassses,AActiion Mapppinng(此此處包括括ActtionnForrwarrd
37、),AActiionFFromm Beean。Struuts ActtionnSerrvleetActiionSServvlett繼承自自javvax.serrvleet.hhttpp.HtttpSServvlett類,其其在Sttrutts fframmewoork中中扮演的的角色是是控制器器,參看看上面的的“Strrutss體系圖圖”??刂浦破鰽cctioonSeervllet主主要負(fù)責(zé)責(zé)將客戶戶的HTTTP請請求信息息組裝后后,根據(jù)據(jù)配置文文件的指指定描述述,轉(zhuǎn)發(fā)發(fā)到適當(dāng)當(dāng)?shù)奶幚砝砥?。按照SServveltt的標(biāo)準(zhǔn)準(zhǔn),所有有得Seervllet必必須在wweb配配置文件件(weeb.xx
38、ml)聲聲明。同同樣,AActooinSServvlett必須在在Webb Apppliicattionn配置文文件(wweb.xmll)中描描述,有有關(guān)配置置信息,后后面將會會介紹。當(dāng)用戶向向服務(wù)器器端提交交請求的的時候,實實際上信信息是首首先發(fā)送送到控制制器AcctioonSeervllet,一一旦控制制器獲得得了請求求,其就就會將請請求信息息傳交給給一些輔輔助類(hhelpp cllassses)處處理。這這些輔助助類知道道如何去去處理與與請求信信息所對對應(yīng)的業(yè)業(yè)務(wù)操作作。在SStruuts中中,這個個輔助類類就是oorg.apaachee.sttrutts.aactiion.Actti
39、onn。通常常開發(fā)者者需要自自己繼承承Aciitonn類,從從而實現(xiàn)現(xiàn)自己的的Acttionn實例。Struuts Acttionn Cllassses public ActionForward execute(ActionMappingmapping, ActionFormform, javax.servlet.ServletRequestrequest, javax.servlet.ServletResponseresponse) throws java.io.IOException,javax.servlet.ServletExceptionActiion類類所作的的工作,正正如它的的名
40、稱一一樣,就就是具體體的業(yè)務(wù)務(wù)操作。Acttionn類中最最為常用用的是eexeccutee()方方法。當(dāng)Coontrrolller收收到客戶戶的請求求的時候候,就會會將請求求轉(zhuǎn)移到到一個AActiion實實例,然然后會調(diào)調(diào)用這個個Acttionn實例的的exeecutte()方方法。SStruuts Fraamewworkk為應(yīng)用用系統(tǒng)中中的每一一個Acctioon類只只創(chuàng)建一一個實例例。所有有的用戶戶都使用用這一個個實例, Acttionn 類運運行在一一個多線線程的環(huán)環(huán)境中。注意,客客戶自己己繼承的的Acttionn子類,必必須重寫寫exeecutte()方方法,因因為Acctioon類
41、在在默認(rèn)情情況下是是返回nnulll的。Struuts Acttionn Maappiing上面講到到了一個個客戶請請求是如如何被控控制器轉(zhuǎn)轉(zhuǎn)發(fā)和處處理的,但但是,控控制器如如何知道道什么樣樣的信息息轉(zhuǎn)發(fā)到到什么樣樣的Acctioon類呢呢?這就就需要一一些與動動作和請請求信息息相對應(yīng)應(yīng)的映射射配置說說明。在在strrutss 中,這這些配置置映射信信息是存存儲在特特定的XXML文文件(sstruuts-connfigg.xmml)。 這些配置置信息在在系統(tǒng)啟啟動的時時候被讀讀入內(nèi)存存,供sstruuts fraamewworkk在運行行期間使使用。在在內(nèi)存中中,每一一個元素都都與orrg.a
42、apacche.strrutss.acctioon.AActiionMMapppingg類的一一個實例例對應(yīng)。下表就就顯示了了一個登登陸的配配置映射射。Pathh:這個個屬性用用來和JJSP頁頁面中,調(diào)調(diào)用時的aactiion屬屬性相對對應(yīng),它它將JSSP頁面面和處理理這個JJSP頁頁面的AActiion對對象對應(yīng)應(yīng)起來。Typee: 對對應(yīng)的AActiion子子類的完完整類名名。Namee: 對對應(yīng)的AActiionFFormm的名稱稱。他與與下面將將描述的的元元素的nnamee屬性相相應(yīng)。Scoppe:這這個屬性性表示相相對應(yīng)的的ActtionnForrm bbeann 的sscoppe屬
43、性性。它的的值可以以是“pagge”、“reqquesst”、“sesssioon”和“apppliccatiion”。分別別對應(yīng)jjavaa beean的的“pagge”、“reqquesst”、“sesssioon”和“apppliccatiion”屬性。Inpuut:這這個屬性性表示如如果對應(yīng)應(yīng)的AcctioonFoorm的的vallidaate方方法返回回值的AActiionEErroors非非空,即即ActtionnForrm的屬屬性沒有有通過校校驗,則則跳轉(zhuǎn)到到當(dāng)前的的頁面。Valiidatte: 是否調(diào)調(diào)用FoormBBeann的vaaliddatee()方方法來驗驗證,關(guān)關(guān)閉它
44、之之后就不不會報出出錯誤信信息了。TTruee表示需需要調(diào)用用vallidaate方方法;ffalsse表示示不需要要調(diào)用vvaliidatte方法法。 forrwarrd:定定義可能能的跳轉(zhuǎn)轉(zhuǎn)路徑。Namme屬性性表示AActiion類類的exxecuute方方法中,生生成的返返回結(jié)果果時的參參數(shù);ppathh表示將將要跳轉(zhuǎn)轉(zhuǎn)到的頁頁面的路路徑。 上面的配配置表示示:當(dāng)可可以通過過/loogonnActtionn.doo提交請請求信息息的時候候,控制制器將信信息委托托comm.teest.LoggonAActiion處處理。調(diào)調(diào)用LoogonnActtionn實例的的exeecutte()方
45、法。同時將將Mapppinng實例例和所對對應(yīng)的LLogoonFoorm Beaan信息息傳入。其中nnamee=LoogonnForrm,使使用的fformm-beean元元素所聲聲明的AActiionFFormm Beean。有關(guān)fformm-beean的的聲明如如下顯示示。有兩兩個屬性性: nnamee :這這個AcctioonFoorm的的名字,他他與被頁頁面中的的元元素的nnamee屬性應(yīng)應(yīng)該是相相同的。比如,如如果在一一個頁面面中需要要生成一一個AcctioonFoorm對對象,這這個對象象的名字字(就是是namme屬性性)是“LogginFFormm”,則頁頁面中的的元元素的nn
46、amee屬性也也應(yīng)該是是“LogginFFormm”。 Tyype:這個個ActtionnForrm對象象的完整整類名。這個屬屬性和頁頁面中的的元元素的ttypee屬性是是相對應(yīng)應(yīng)的。在此稍稍稍說一下下有關(guān)gglobbal-forrwarrds的的概念。其在配配置文件件中描述述了整個個應(yīng)用系系統(tǒng)可以以使用的的ActtionnForrwarrd,而而不是僅僅僅是一一個特定定的Acctioon。元素素用來表表示全局局的跳轉(zhuǎn)轉(zhuǎn)頁面。和元素一一樣,他他有無數(shù)數(shù)個元素素。當(dāng)一一個Acctioon對象象的exxecuute方方法執(zhí)行行完畢以以后,如如果他返返回的AActiionFForwwardd對象沒沒
47、有在這這個元素的的子元素素中有對對應(yīng)值的的話,他他將要查查找中的元元素,并并跳轉(zhuǎn)到到相應(yīng)頁頁面。 前面我們們講過SStruuts采采用屬性性文件來來保存應(yīng)應(yīng)用程序序的信息息,那么么,Sttrutts如何何知道屬屬性文件件的路徑徑呢,也也在sttrutts-cconffig.xmll文件來來配置:元元素用來來表示AAppllicaatioonReesouurcees.ppropperttiess文件的的位置。這個元元素有一一個屬性性paarammeteer,這這個屬性性用來表表示ApppliicattionnRessourrcess.prropeertiies文文件的存存放地點點,但有有意思的的
48、是,他他是用一一個類名名來來表表示存放放路徑的的。比如如“comm. AAppllicaatioonReesouurcees”是表示示存放在在WEBB-INNFcclasssess / comm 路徑徑下面的的ApppliccatiionRRoperrtiees文件件。上圖圖表示的的文件路路徑為WWEB-INFFcllassses /teest/ApppliccatiionRRoperrtiees。注意:以以上所述述的這些些元素在在strrutss-coonfiig.xxml文文件中的的位置也也是有先先后順序序的。它它們的順順序是:Struuts ActtionnForrm BBeann在上面
49、講講解AcctioonSeervllet,AActiion Claassees和AActiion Mapppinng的時時候,我我們都提提到了AActiionFFormm Beean的的概念。ActtionnForrm的主主要功能能就是為為Acttionn的操作作提供提提交表單單相映射射的數(shù)據(jù)據(jù)。對于每一一個客戶戶請求,SStruuts fraamewworkk在處理理ActtionnForrm的時時候,一一般需要要經(jīng)歷如如下幾個個步驟:()檢檢查Acctioon的映映射,確確定Acctioon中已已經(jīng)配置置了對AActiionFFormm的映射射()根根據(jù)naame屬屬性,查查找foorm
50、beaan的配配置信息息()檢檢查Acctioon的fformmbeaan的使使用范圍圍,確定定在此范范圍下,是是否已經(jīng)經(jīng)有此fformm beean的的實例。()假假如當(dāng)前前范圍下下,已經(jīng)經(jīng)存在了了此foorm beaan的實實例,而而是對當(dāng)當(dāng)前請求求來說,是是同一種種類型的的話,那那么就重重用。()否否則,就就重新構(gòu)構(gòu)建一個個forrm bbeann的實例例()fformm beean的的resset()方法法備調(diào)用用()調(diào)調(diào)用對應(yīng)應(yīng)的seetteer方法法,對狀狀態(tài)屬性性賦值()如如果vaaliddateede的的屬性北北設(shè)置為為truue,那那么就調(diào)調(diào)用foorm beaan的vval
51、iidatte()方法。例子講解解在這一部部分,我我將根據(jù)據(jù)一個簡簡單的例例子去詳詳細(xì)的介介紹一下下strrutss框架的的具體用用法。環(huán)境安裝裝利用Jbbuillderr8.00 使用用Strrutss 1.1(版版本)目前Jbbuillderr中默認(rèn)認(rèn)帶的都都是sttrutts1.0版本本,我們們使用的的是sttrutts1.1版本本,所以以需要手動動的配置置相關(guān)的的類庫第一步:Strrutss1.11版本的的獲得可以通過過訪問jjakaartaa.appchee.orrg的方方式來下下載,也也可以從從我機器器的共享享目錄拷拷貝:IP:1500 或或機器名名zhffU
52、serr: gguesstPWD: 空內(nèi)容: srrc文件件夾下 有 Jarrkarrta-strrutss-1.1-rrc1Jarrkarrta-strrutss-1.1-rrc1-srccExammplee_sttrutts(例例子文件件源代碼碼,可以以用Jbbuillderr直接打打開)Propperttiess(屬性性文件使使用例子子)Taguuse(tagglibb例子) 還有有一些資資料。第二步: Jbbuillderr配置SStruuts11.1 首首先將SStruuts11.1文文件(包包括源碼碼)拷貝貝至jbbuillderr/thhirddparrty目目錄下:打開jbbu
53、illderr,選擇擇toools/connfigguree liibraariees,在在彈出的的窗口上上點擊nnew 按鈕Namee :sstruuts11.1Locaatioon :Jbuillderr點擊 OOk,回回到剛才才的界面面,你會會看到多多出的一一項sttrutts1.1,選選中它,在在右邊的的claass標(biāo)標(biāo)簽中點點擊Addd按鈕鈕,將所所帶的所所有jaar包添添加進(jìn)去去,最后后的效果果如下圖圖:然后選擇擇FraameWWorkk標(biāo)簽,在在其中的的Fraamewworkk上選擇擇Strrutss即可。(這里JJbuiildeer會自自動識別別版本的的)。利用Jbbuilld
54、err創(chuàng)建支支持Sttrucct1.1的工工程:首先建立立一個jjbuiildeer工程程文件,名名稱可以以自己定定,這里里我使用用的eaasyuuse然后建立立一個wwar文文件,名名稱可以以自己定定,這里里我使用用的eaasyuuse,注意在在下面的的選項中中使用SStruuts11.1(Strrutss1.11)Frrameeworrks這時程序序的項目目瀏覽器器內(nèi)容如如下我們可以以看到一一個Sttrutts1.1節(jié)點點出現(xiàn)在在樹形圖圖中,證證明你前前面的操操作是正正確的。利用Jbbuillderr支持的的Stuuctss對象創(chuàng)創(chuàng)建向?qū)?dǎo): 當(dāng)當(dāng)我們點點擊新建建按鈕之之后,我我們可以以看
55、到在在 Weeb標(biāo)簽簽下的其其他對象象。 Sttrutts CConvvertter AActiionFFormmActiionJSP froom AActiionFFormm大家可以以跟著向向?qū)б徊讲揭徊絹韥聿僮?。程序編寫寫任?wù)描述述。 ccreaateBBookk.jssp輸輸入一本本書的標(biāo)標(biāo)題和頁頁碼。 boookvvieww.jssp正常常運轉(zhuǎn)之之后,此此界面將將會獲得得creeateeBoook.jjsp傳傳來的ttitlle參數(shù)數(shù)。 再次提提交之后后,又回回到了ccreaatboook.jspp界面,一一個循環(huán)環(huán)過程。ActiionFFormm類為了便于于講述,我我在講解解內(nèi)容寫寫
56、入代碼碼中。packkagee teest;impoort javva.uutill.*;impoort orgg.appachhe.sstruuts.acttionn.*;impoort orgg.appachhe.sstruuts.vallidaatorr.VaaliddatoorFoorm;impoort javvax.serrvleet.hhttpp.*;publlic cllasss BoookAActiionFFormm exxtennds AcctioonFoorm/這里里要求 所有的的自己編編寫的FFormmBeaan必須須繼承AActiionFFormmprivvatee S
57、ttrinng ttitlle=; priivatte iint pagges=0;/這里里的兩個個私有屬屬性字段段,對應(yīng)應(yīng)了crreatteBoook.jspp中的兩兩個文本本框,SStruuts會會自動給給它們賦賦/值的的 pubblicc vooid settTittle(Strringg tiitlee) thhis.tittle=tittle; pubblicc Sttrinng ggetTTitlle() rretuurn thiis.ttitlle; pubblicc vooid settPagges(intt paagess) thhis.pagges=pagges; pubb
58、licc innt ggetPPagees() rretuurn thhis.pagges;/Sttutss會自動動調(diào)用AActiionFFormm的vaaliddatee()方方法,來來對輸入入信息進(jìn)進(jìn)行校驗驗。/ vvaliidatte()方法返返回為AActiionEErroors,這這如jaava的的Exccepttionn處理機機制。publlic ActtionnErrrorss vaaliddatee(AcctioonMaappiing acttionnMapppinng, HtttpSeervlletRRequuestt htttpSServvlettReqquesst) Ac
59、ttionnErrrorss errrorrs =neww AcctioonErrrorrs(); if(tiitlee=nnulll)|(tiitlee.leengtth()3) eerroors.addd(TTitlle, neew AActiionEErroor(errror.boook.ttitlle); if(pagges1) eerroors.addd(PPagee,nnew ActtionnErrror(errrorr.boook.pagge); retturnn errrorrs; publlic voiid rreseet(AActiionMMapppingg acctioo
60、nMaappiing, HtttpSServvlettReqquesst hhttppSerrvleetReequeest) tittle = nnulll; pagges = 00; Struuts-connfigg.xmml這是Sttrutts核心心文件,Struts-config.xml集中了所有頁面的導(dǎo)航定義。對于大型的WEB項目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對于前期的開發(fā),還是后期的維護(hù)或升級都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。/FoormBBeann的聲明明 /公共共跳轉(zhuǎn) /acctioon申明明 /屬屬性文件件聲明 A
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度出租車租賃服務(wù)合同規(guī)范文本4篇
- 2025年度苗圃場技術(shù)員園藝產(chǎn)品創(chuàng)新聘用協(xié)議3篇
- 2025年度魚塘承包及配套設(shè)施建設(shè)合同范本4篇
- 2025年度藕塘漁業(yè)養(yǎng)殖與休閑旅游一體化合作協(xié)議書4篇
- 大數(shù)據(jù)分析與零售營銷策略-深度研究
- 智能機器人人機交互-深度研究
- 二零二五版母嬰護(hù)理專業(yè)團(tuán)隊月嫂服務(wù)協(xié)議4篇
- 二零二五年度水庫水利樞紐承包管理協(xié)議3篇
- 2025年度充電樁充電站設(shè)備采購與安裝合同范本4篇
- 二零二五年度2025版頂級馬戲團(tuán)藝術(shù)表演服務(wù)協(xié)議4篇
- 國家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢病種診療方案和臨床路徑目錄
- 2024年全國甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級上冊小學(xué)生口算天天練
- 三年級數(shù)學(xué)添括號去括號加減簡便計算練習(xí)400道及答案
- 蘇教版五年級上冊數(shù)學(xué)簡便計算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計算機江蘇對口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
- KAPPA-實施方法課件
評論
0/150
提交評論