




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ù)的的代碼,而而這部分分代碼并并沒有任任何邏輯輯決定它它對(duì)用戶戶端的表表示方法
2、法。Moodell只有純純粹的功功能性接接口,也也就是一一系列的的公開方方法,通通過這些些公開方方法,便便可以取取得模型型端的所所有功能能。在sstruuts框框架中,MModeel端是是用Acctioon和EEJB技技術(shù)實(shí)現(xiàn)現(xiàn)的。Vieww端在MVCC模式里里,一個(gè)個(gè)Moddel可可以有幾幾個(gè)Viiew端端,而實(shí)實(shí)際上復(fù)復(fù)數(shù)的VVieww端是使使用MVVC的原原始動(dòng)機(jī)機(jī)。使用用MVCC模式可可以允許許多于一一個(gè)的VVieww端存在在,并可可以在需需要的時(shí)時(shí)候動(dòng)態(tài)態(tài)的登記記上所需需要的VVieww.Conttrolllerr端MVC模模式的視視圖端是是與MVVC的控控制器結(jié)結(jié)合使用用的。當(dāng)當(dāng)用
3、戶端端與相應(yīng)應(yīng)的視圖圖發(fā)生交交互時(shí),用用戶可以以通過視視窗更新新模型的的狀態(tài),而而這種更更新是通通過控制制器端進(jìn)進(jìn)行的。控制器器端通過過調(diào)用模模型端的的方法更更改其狀狀態(tài)值。與此同同時(shí),控控制器端端會(huì)通知知所有的的登記了了的視圖圖刷新顯顯示給用用戶的表表示。在現(xiàn)在的的j2eee應(yīng)用用中,我我們?cè)陂_開發(fā)weeb sservver時(shí)時(shí)基本上上都是采采用MVVC模式式來開發(fā)發(fā)的,jj2eee規(guī)范也也相應(yīng)的的為我們們提供了了技術(shù)支支持,請(qǐng)請(qǐng)看下圖圖:Web Server 2 6 5 BrowserActionServletEJB Server 1 2 3 5 44JSP 7 11 瀏覽覽器用戶戶執(zhí)行s
4、servvlett的dooGett方法; 22 seervllet根根據(jù)不同同的請(qǐng)求求,將他他們分發(fā)發(fā)到不同同的Acctioon中。在這里里,seervllet的的作用就就好比是是conntroolleer; 33 Acctioon調(diào)用用EJBB層的商商務(wù)邏輯輯程序處處理用戶戶的請(qǐng)求求; 44 EJJB層返返回給AActiion處處理結(jié)果果; 55 Acctioon 對(duì)對(duì)將處理理結(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)點(diǎn)如下下:可靠性(Reliability):將表示層和處理層完全分開,可以在不重新編譯model和controller的情況下修改view層。復(fù)用性和和適應(yīng)性性(reeusee & adaaptaabillityy):MMVC使使你可以以使用多多種viiew去去訪問相相同的mmodeel??焖匍_發(fā)發(fā)(Raapidd deeplooymeent):因?yàn)镸MVC清清晰的將將表示層層和處理理層分開開,所以以使得不不同的程程序員可可以各司司其則,增
6、增加開發(fā)發(fā)速度。可維護(hù)性性(Maainttainnabiilitty):清晰的的分層同同樣使得得代碼清清晰、程程序的可可維護(hù)性性提高。Struuts的的概念和和體系結(jié)結(jié)構(gòu)概述 sttrutts源自自于appachhe的jjakaartaa工程,是是一個(gè)開開源代碼碼工程( HYPERLINK / /)。現(xiàn)在struts最新的版本是1.2,而jBuilder自帶的版本是1.02。struts是一個(gè)完全遵照MVC模型設(shè)計(jì)的,web層的框架。struuts與與MVCC模式 sttrutts是一一個(gè)完全全遵照MMVC模模型設(shè)計(jì)計(jì)的,wweb層層的框架架。在sstruuts中中,使用用到了jjsp、jav
7、vabeean、tagglibb和seervllet技技術(shù)。下下圖是一一個(gè)描述述了sttrutts框架架的應(yīng)用用請(qǐng)求的的執(zhí)行路路徑:這個(gè)過程程大體可可以被分分成5個(gè)個(gè)基本步步驟: 1 vvieww發(fā)起一一個(gè)請(qǐng)求求2 AcctioonSeervllet(sservvlett技術(shù)實(shí)實(shí)現(xiàn))接接受這個(gè)個(gè)請(qǐng)求,它它根據(jù)一一份xmml文件件來得到到處理這這個(gè)請(qǐng)求求的Acctioon對(duì)象象,并將將請(qǐng)求發(fā)發(fā)送給這這個(gè)Acctioon對(duì)象象。3 Acctioon對(duì)象象接受這這個(gè)請(qǐng)求求,并調(diào)調(diào)用moodell(EJJB)去去處理這這個(gè)請(qǐng)求求,并將將處理結(jié)結(jié)果返回回給AcctioonSeervllet。4 Acct
8、ioonSeervllet根根據(jù)Acctioon 的的返回結(jié)結(jié)果中的的信息,決決定將處處理結(jié)果果返回給給對(duì)應(yīng)的的vieew。5 viiew得得到處理理結(jié)果,并并將他顯顯示給用用戶。THE MODDELStruuts框框架提供供Acttionn作為mmodeel的一一種實(shí)現(xiàn)現(xiàn)。Acctioon 是是繼承oorg.apaachee.sttrutts.aactiion. Acctioon的類類,他用用來處理理用戶的的請(qǐng)求,并并將處理理結(jié)果封封裝在HHttppSerrvleetReequeest中中,返回回給AcctioonSeervllet。THE VIEEW SStruuts用用JSPP、taag
9、liib和jjavaabeaan技術(shù)術(shù)去實(shí)現(xiàn)現(xiàn)vieew。JJSP用用來顯示示視圖;strrutss通過使使用自己己定義的的一組ttagllib來來控制請(qǐng)請(qǐng)求的流流程、輔輔助處理理結(jié)果的的顯示;javvabeean用用來保存存用戶在在JSPP頁面中中的輸入入數(shù)據(jù),他他用來方方便的向向Acttionn傳遞用用戶輸入入數(shù)據(jù)。THE CONNTROOLLEERStruuts用用orgg.appachhe.sstruuts.acttionn.AcctioonSeervllet去去實(shí)現(xiàn)cconttrolllerr的功能能。這個(gè)個(gè)serrvleet接收收所有JJSP頁頁面發(fā)送送的請(qǐng)求求,根據(jù)據(jù)一份配配置文
10、件件得到處處理相應(yīng)應(yīng)用戶請(qǐng)請(qǐng)求的AActiion,并調(diào)用用Acttionn去處理理用戶的的請(qǐng)求。當(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)省反射機(jī)制制是一種種決定一一個(gè)對(duì)象象哪些成成員域和和成員方方法被采采用的過過程。內(nèi)內(nèi)省技術(shù)術(shù)是反射射機(jī)制的的一種特特殊機(jī)制制,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ū)賹傩裕瑢賹傩晕募暮缶Y綴名為.prooperrtiees,屬屬性文件件的格式式類似于于以下內(nèi)內(nèi)容:bookk=myy ccompputeer bbookk pagees=1120authho
14、rss=zhhfsemiinarr=122使用屬性性文件javaa.uttil包包中Prropeertiies類類用來管管理一個(gè)個(gè)Keyy/vaaluee對(duì),PPropperttiess類提供供了以下下方法:loadd()方方法:LLoaddingg kkey/vallue paiirs intto aa PPropperttiess obbjecct forrm aa Sttreaam 從從一個(gè)輸輸入流中中加載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ù),需要要建立多多個(gè)屬性性文件,假假設(shè)我們們系統(tǒng)中中需要支支持德文文和法文文,我們們的默認(rèn)認(rèn)屬性文文件為L(zhǎng)LabeelsBBoperrtiees文件件,那么么我們需需要建立立德文和和法文所所對(duì)應(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對(duì)對(duì)象可以以選擇屬屬性文件件:下面我們們給一個(gè)個(gè)具體的的例子impoort javva.uutill.*;impoort javva.iio.*;publlic claass RessourrceBBunddleDDemoo pubblicc sttatiic vvoidd maain(Strringg arggs) /采用了了德國(guó)設(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);/采用了了法國(guó)設(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)請(qǐng)求求等提供供便利,除除此之外外,JSSP技術(shù)術(shù)允許我我們自己己封裝特特有的標(biāo)標(biāo)簽,來來簡(jiǎn)化應(yīng)應(yīng)用程序序開發(fā)。有經(jīng)驗(yàn)驗(yàn)的開發(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頁面中中所有的的對(duì)象??梢垣@得得JSPP頁面的的Ressponnse對(duì)對(duì)象。標(biāo)簽之間間互相通通訊。標(biāo)簽可以以被嵌套套,實(shí)現(xiàn)現(xiàn)標(biāo)簽的的多層使使用。標(biāo)簽的使使用為了能夠夠在jssp頁面面中使用用一個(gè)標(biāo)標(biāo)簽,我我們需要要變現(xiàn)一一個(gè)實(shí)現(xiàn)現(xiàn)了TaagSuuppoort類類的jaava程程序,然然后通過過tldd文件,定定義該標(biāo)標(biāo)簽的屬屬性,然然后通過過webb.xmml聲明明這個(gè)ttld文文件,最最后才可可以在JJSP頁頁面中使
24、使用標(biāo)簽簽的。下面我還還是根據(jù)據(jù)例子來來簡(jiǎn)單講講一下詳細(xì)代碼碼下srrc/ttaguuse目目錄下。定制標(biāo)簽簽類packkagee coom.zzhfeelvaa.taag;impoort javvax.serrvleet.jjsp.*;impoort javvax.serrvleet.jjsp.taggextt.*;impoort javva.iio.*;/* * 一一個(gè)顯示示當(dāng)前時(shí)時(shí)間的標(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)行配置置一個(gè)網(wǎng)頁頁應(yīng)用程程序要在在webb.xmml中聲聲明他要要使用的的標(biāo)簽庫庫: my-ttagllib /WWEB-INFF/t
27、aagliib/mmytaagliib.ttld 簡(jiǎn)單標(biāo)簽簽的使用用以上配置置做好之之后,就就可以在在JSPP頁面中中使用標(biāo)標(biāo)簽了:currrentttimme.jjsp顯示當(dāng)當(dāng)前時(shí)間間 - JSPP/TaagLiib顯示當(dāng)當(dāng)前時(shí)間間 - JSPP/TaagLiibStruuts中中真正將將標(biāo)簽庫庫應(yīng)用了了起來,大大家可以以從中看看到標(biāo)簽簽庫的強(qiáng)強(qiáng)大功能能。更多的內(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ù),由于于時(shí)間關(guān)關(guān)系,這這里就不不做講述述了。主要技術(shù)術(shù)Struuts體體系結(jié)構(gòu)構(gòu)ClientIE or NetscapeControllerActionServletBusiness LogicActionModelJavaBean or EJBViewJSPHTTPRequestAction FormHTTPResponseStruts-config.xmlStruts體系圖控制:通通過Sttrutts體系系圖大家
30、家可以看看到有一一個(gè)XMML文件件Strrutss-coonfiig.xxml,與與之相關(guān)關(guān)聯(lián)的是是Conntroolleer,在在Strrutss中,承承擔(dān)MVVC中CConttrolllerr角色的的是一個(gè)個(gè)Serrvleet,叫叫ActtionnSerrvleet。AActiionSServvlett是一個(gè)個(gè)通用的的控制組組件。這這個(gè)控制制組件提提供了處處理所有有發(fā)送到到Strrutss的HTTTP請(qǐng)請(qǐng)求的入入口點(diǎn)。它截取取和分發(fā)發(fā)這些請(qǐng)請(qǐng)求到相相應(yīng)的動(dòng)動(dòng)作類(這這些動(dòng)作作類都是是Acttionn類的子子類)。另外控控制組件件也負(fù)責(zé)責(zé)用相應(yīng)應(yīng)的請(qǐng)求求參數(shù)填填充 AActiion Froo
31、m(通通常稱之之為FrromBBeann),并傳傳給動(dòng)作作類(通通常稱之之為AcctioonBeean)。動(dòng)作類實(shí)現(xiàn)核心商業(yè)邏輯,它可以訪問java bean 或調(diào)用EJB。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。視圖:主主要由JJSP生生成頁面面完成視視圖,SStruuts提提供豐富富的JSSP 標(biāo)標(biāo)簽庫: Httml,BBeann,Loogicc,Teempllatee等,這這有利于于分開表表現(xiàn)邏輯輯和程序序邏輯。模型:模模型以一一個(gè)或多多個(gè)jaava beaan的形形式存在在。這些些beaan分為為三類:A
32、cttionn Foorm、Acttionn、JaavaBBeann orr EJJB。AActiion Forrm通常常稱之為為FormBeann,封裝裝了來自自于Clliennt的用用戶請(qǐng)求求信息,如如表單信信息。AActiion通通常稱之之為AcctioonBeean,獲獲取從AActiionSSevllet傳傳來的FFormBeann,取出出FormBeann中的相相關(guān)信息息,并做做出相關(guān)關(guān)的處理理,一般般是調(diào)用用Javva BBeann或EJJB等。流程:在在Strrutss中,用用戶的請(qǐng)請(qǐng)求一般般以*.do作作為請(qǐng)求求服務(wù)名名,所有有的*.do請(qǐng)請(qǐng)求均被被指向AActiionSSe
33、vllet,AActiionSSevllet根根據(jù)Sttrutts-cconffig.xmll中的配配置信息息,將用用戶請(qǐng)求求封裝成成一個(gè)指指定名稱稱的FormBeann,并將將此FormBeann傳至指指定名稱稱的AcctioonBeean,由由ActtionnBeaan完成成相應(yīng)的的業(yè)務(wù)操操作,如如文件操操作,數(shù)數(shù)據(jù)庫操操作等。每一個(gè)個(gè)*.ddo均有有對(duì)應(yīng)的的FormBeann名稱和和ActtionnBeaan名稱稱,這些些在Sttrutts-cconffig.xmll中配置置。Struuts的的基本組組件包整個(gè)sttrutts大約約有155包,近近2000個(gè)類所所組成,而而且數(shù)量量還在不
34、不斷的擴(kuò)擴(kuò)展。在在此我們們不能一一一介紹紹,只能能列舉幾幾個(gè)主要要的簡(jiǎn)要要的介紹紹一下。下表說說明了目目前sttrutts aapi中中基本的的幾個(gè)組組件包,包包括acctioon,aactiionss,taagliib。圖圖片(55)則顯顯現(xiàn)了這這幾個(gè)組組件包之之間的關(guān)關(guān)系。其其中acctioon是整整個(gè)sttrutts fframmewoork的的核心org.apaachee.sttrutts.aactiion基本上,控控制整個(gè)個(gè)strrutss frrameeworrk的運(yùn)運(yùn)行的核核心類、組件都都在這個(gè)個(gè)包中,比比如我們們上面提提到的控控制器AActiionSServvlett,Acct
35、ioon,AActiionFFormm,AcctioonMaappiing等等等。sstruuts11.1比比1.00多了 DynnaAcctioonFoorm 類。增增加了動(dòng)動(dòng)態(tài)擴(kuò)展展生成FFormmBeaan功能能org.apaachee.sttrutts.aactiionss這個(gè)包是是主要作作用是提提供客戶戶的htttp請(qǐng)請(qǐng)求和業(yè)業(yè)務(wù)邏輯輯處理之之間的特特定適配配器轉(zhuǎn)換換功能,而而1.00版本中中的部分分動(dòng)態(tài)增增刪FrromBBeann的類,也也在sttrutts1.1中被被Acttionn包的DDynaaActtionnForrm組件件所取代代org.apaachee.sttrutts
36、.ttagllib這不是一一個(gè)包,而而是是一一個(gè)客戶戶標(biāo)簽類類的集合合。下面面包括BBeann Taags,HTMML TTagss,Loggic Taggs,Nesstedd Taags,Temmplaate Taggs這幾幾個(gè)用于于構(gòu)建用用戶界面面的標(biāo)簽簽類。 Struts的基本組件關(guān)系圖對(duì)于Sttrutts 如如何控制制、處理理客戶請(qǐng)請(qǐng)求,讓讓我們通通過對(duì)sstruuts的的四個(gè)核核心組件件介紹來來具體說說明。這這幾個(gè)組組件就是是:AcctioonSeervllet。Acttionn Cllassses,AActiion Mapppinng(此此處包括括ActtionnForrwarrd
37、),AActiionFFromm Beean。Struuts ActtionnSerrvleetActiionSServvlett繼承自自javvax.serrvleet.hhttpp.HtttpSServvlett類,其其在Sttrutts fframmewoork中中扮演的的角色是是控制器器,參看看上面的的“Strrutss體系圖圖”。控制制器AcctioonSeervllet主主要負(fù)責(zé)責(zé)將客戶戶的HTTTP請(qǐng)請(qǐng)求信息息組裝后后,根據(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)配置置信息,后后面將會(huì)會(huì)介紹。當(dāng)用戶向向服務(wù)器器端提交交請(qǐng)求的的時(shí)候,實(shí)實(shí)際上信信息是首首先發(fā)送送到控制制器AcctioonSeervllet,一一旦控制制器獲得得了請(qǐng)求求,其就就會(huì)將請(qǐng)請(qǐng)求信息息傳交給給一些輔輔助類(hhelpp cllassses)處處理。這這些輔助助類知道道如何去去處理與與請(qǐng)求信信息所對(duì)對(duì)應(yīng)的業(yè)業(yè)務(wù)操作作。在SStruuts中中,這個(gè)個(gè)輔助類類就是oorg.apaachee.sttrutts.aactiion.Actti
39、onn。通常常開發(fā)者者需要自自己繼承承Aciitonn類,從從而實(shí)現(xiàn)現(xiàn)自己的的Acttionn實(shí)例。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收收到客戶戶的請(qǐng)求求的時(shí)候候,就會(huì)會(huì)將請(qǐng)求求轉(zhuǎn)移到到一個(gè)AActiion實(shí)實(shí)例,然然后會(huì)調(diào)調(diào)用這個(gè)個(gè)Acttionn實(shí)例的的exeecutte()方方法。SStruuts Fraamewworkk為應(yīng)用用系統(tǒng)中中的每一一個(gè)Acctioon類只只創(chuàng)建一一個(gè)實(shí)例例。所有有的用戶戶都使用用這一個(gè)個(gè)實(shí)例, Acttionn 類運(yùn)運(yùn)行在一一個(gè)多線線程的環(huán)環(huán)境中。注意,客客戶自己己繼承的的Acttionn子類,必必須重寫寫exeecutte()方方法,因因?yàn)锳cctioon類
41、在在默認(rèn)情情況下是是返回nnulll的。Struuts Acttionn Maappiing上面講到到了一個(gè)個(gè)客戶請(qǐng)請(qǐng)求是如如何被控控制器轉(zhuǎn)轉(zhuǎn)發(fā)和處處理的,但但是,控控制器如如何知道道什么樣樣的信息息轉(zhuǎn)發(fā)到到什么樣樣的Acctioon類呢呢?這就就需要一一些與動(dòng)動(dòng)作和請(qǐng)請(qǐng)求信息息相對(duì)應(yīng)應(yīng)的映射射配置說說明。在在strrutss 中,這這些配置置映射信信息是存存儲(chǔ)在特特定的XXML文文件(sstruuts-connfigg.xmml)。 這些配置置信息在在系統(tǒng)啟啟動(dòng)的時(shí)時(shí)候被讀讀入內(nèi)存存,供sstruuts fraamewworkk在運(yùn)行行期間使使用。在在內(nèi)存中中,每一一個(gè)元素都都與orrg.a
42、apacche.strrutss.acctioon.AActiionMMapppingg類的一一個(gè)實(shí)例例對(duì)應(yīng)。下表就就顯示了了一個(gè)登登陸的配配置映射射。Pathh:這個(gè)個(gè)屬性用用來和JJSP頁頁面中,調(diào)調(diào)用時(shí)的aactiion屬屬性相對(duì)對(duì)應(yīng),它它將JSSP頁面面和處理理這個(gè)JJSP頁頁面的AActiion對(duì)對(duì)象對(duì)應(yīng)應(yīng)起來。Typee: 對(duì)對(duì)應(yīng)的AActiion子子類的完完整類名名。Namee: 對(duì)對(duì)應(yīng)的AActiionFFormm的名稱稱。他與與下面將將描述的的元元素的nnamee屬性相相應(yīng)。Scoppe:這這個(gè)屬性性表示相相對(duì)應(yīng)的的ActtionnForrm bbeann 的sscoppe屬
43、性性。它的的值可以以是“pagge”、“reqquesst”、“sesssioon”和“apppliccatiion”。分別別對(duì)應(yīng)jjavaa beean的的“pagge”、“reqquesst”、“sesssioon”和“apppliccatiion”屬性。Inpuut:這這個(gè)屬性性表示如如果對(duì)應(yīng)應(yīng)的AcctioonFoorm的的vallidaate方方法返回回值的AActiionEErroors非非空,即即ActtionnForrm的屬屬性沒有有通過校校驗(yàn),則則跳轉(zhuǎn)到到當(dāng)前的的頁面。Valiidatte: 是否調(diào)調(diào)用FoormBBeann的vaaliddatee()方方法來驗(yàn)驗(yàn)證,關(guān)關(guān)閉它
44、之之后就不不會(huì)報(bào)出出錯(cuò)誤信信息了。TTruee表示需需要調(diào)用用vallidaate方方法;ffalsse表示示不需要要調(diào)用vvaliidatte方法法。 forrwarrd:定定義可能能的跳轉(zhuǎn)轉(zhuǎn)路徑。Namme屬性性表示AActiion類類的exxecuute方方法中,生生成的返返回結(jié)果果時(shí)的參參數(shù);ppathh表示將將要跳轉(zhuǎn)轉(zhuǎn)到的頁頁面的路路徑。 上面的配配置表示示:當(dāng)可可以通過過/loogonnActtionn.doo提交請(qǐng)請(qǐng)求信息息的時(shí)候候,控制制器將信信息委托托comm.teest.LoggonAActiion處處理。調(diào)調(diào)用LoogonnActtionn實(shí)例的的exeecutte()方
45、法。同時(shí)將將Mapppinng實(shí)例例和所對(duì)對(duì)應(yīng)的LLogoonFoorm Beaan信息息傳入。其中nnamee=LoogonnForrm,使使用的fformm-beean元元素所聲聲明的AActiionFFormm Beean。有關(guān)fformm-beean的的聲明如如下顯示示。有兩兩個(gè)屬性性: nnamee :這這個(gè)AcctioonFoorm的的名字,他他與被頁頁面中的的元元素的nnamee屬性應(yīng)應(yīng)該是相相同的。比如,如如果在一一個(gè)頁面面中需要要生成一一個(gè)AcctioonFoorm對(duì)對(duì)象,這這個(gè)對(duì)象象的名字字(就是是namme屬性性)是“LogginFFormm”,則頁頁面中的的元元素的nn
46、amee屬性也也應(yīng)該是是“LogginFFormm”。 Tyype:這個(gè)個(gè)ActtionnForrm對(duì)象象的完整整類名。這個(gè)屬屬性和頁頁面中的的元元素的ttypee屬性是是相對(duì)應(yīng)應(yīng)的。在此稍稍稍說一下下有關(guān)gglobbal-forrwarrds的的概念。其在配配置文件件中描述述了整個(gè)個(gè)應(yīng)用系系統(tǒng)可以以使用的的ActtionnForrwarrd,而而不是僅僅僅是一一個(gè)特定定的Acctioon。元素素用來表表示全局局的跳轉(zhuǎn)轉(zhuǎn)頁面。和元素一一樣,他他有無數(shù)數(shù)個(gè)元素素。當(dāng)一一個(gè)Acctioon對(duì)象象的exxecuute方方法執(zhí)行行完畢以以后,如如果他返返回的AActiionFForwwardd對(duì)象沒沒
47、有在這這個(gè)元素的的子元素素中有對(duì)對(duì)應(yīng)值的的話,他他將要查查找中的元元素,并并跳轉(zhuǎn)到到相應(yīng)頁頁面。 前面我們們講過SStruuts采采用屬性性文件來來保存應(yīng)應(yīng)用程序序的信息息,那么么,Sttrutts如何何知道屬屬性文件件的路徑徑呢,也也在sttrutts-cconffig.xmll文件來來配置:元元素用來來表示AAppllicaatioonReesouurcees.ppropperttiess文件的的位置。這個(gè)元元素有一一個(gè)屬性性paarammeteer,這這個(gè)屬性性用來表表示ApppliicattionnRessourrcess.prropeertiies文文件的存存放地點(diǎn)點(diǎn),但有有意思的的
48、是,他他是用一一個(gè)類名名來來表表示存放放路徑的的。比如如“comm. AAppllicaatioonReesouurcees”是表示示存放在在WEBB-INNFcclasssess / comm 路徑徑下面的的ApppliccatiionRRoperrtiees文件件。上圖圖表示的的文件路路徑為WWEB-INFFcllassses /teest/ApppliccatiionRRoperrtiees。注意:以以上所述述的這些些元素在在strrutss-coonfiig.xxml文文件中的的位置也也是有先先后順序序的。它它們的順順序是:Struuts ActtionnForrm BBeann在上面
49、講講解AcctioonSeervllet,AActiion Claassees和AActiion Mapppinng的時(shí)時(shí)候,我我們都提提到了AActiionFFormm Beean的的概念。ActtionnForrm的主主要功能能就是為為Acttionn的操作作提供提提交表單單相映射射的數(shù)據(jù)據(jù)。對(duì)于每一一個(gè)客戶戶請(qǐng)求,SStruuts fraamewworkk在處理理ActtionnForrm的時(shí)時(shí)候,一一般需要要經(jīng)歷如如下幾個(gè)個(gè)步驟:()檢檢查Acctioon的映映射,確確定Acctioon中已已經(jīng)配置置了對(duì)AActiionFFormm的映射射()根根據(jù)naame屬屬性,查查找foorm
50、beaan的配配置信息息()檢檢查Acctioon的fformmbeaan的使使用范圍圍,確定定在此范范圍下,是是否已經(jīng)經(jīng)有此fformm beean的的實(shí)例。()假假如當(dāng)前前范圍下下,已經(jīng)經(jīng)存在了了此foorm beaan的實(shí)實(shí)例,而而是對(duì)當(dāng)當(dāng)前請(qǐng)求求來說,是是同一種種類型的的話,那那么就重重用。()否否則,就就重新構(gòu)構(gòu)建一個(gè)個(gè)forrm bbeann的實(shí)例例()fformm beean的的resset()方法法備調(diào)用用()調(diào)調(diào)用對(duì)應(yīng)應(yīng)的seetteer方法法,對(duì)狀狀態(tài)屬性性賦值()如如果vaaliddateede的的屬性北北設(shè)置為為truue,那那么就調(diào)調(diào)用foorm beaan的vval
51、iidatte()方法。例子講解解在這一部部分,我我將根據(jù)據(jù)一個(gè)簡(jiǎn)簡(jiǎn)單的例例子去詳詳細(xì)的介介紹一下下strrutss框架的的具體用用法。環(huán)境安裝裝利用Jbbuillderr8.00 使用用Strrutss 1.1(版版本)目前Jbbuillderr中默認(rèn)認(rèn)帶的都都是sttrutts1.0版本本,我們們使用的的是sttrutts1.1版本本,所以以需要手動(dòng)動(dòng)的配置置相關(guān)的的類庫第一步:Strrutss1.11版本的的獲得可以通過過訪問jjakaartaa.appchee.orrg的方方式來下下載,也也可以從從我機(jī)器器的共享享目錄拷拷貝:IP:1500 或或機(jī)器名名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,在在彈出的的窗口上上點(diǎn)擊nnew 按鈕Namee :sstruuts11.1Locaatioon :Jbuillderr點(diǎn)擊 OOk,回回到剛才才的界面面,你會(huì)會(huì)看到多多出的一一項(xiàng)sttrutts1.1,選選中它,在在右邊的的claass標(biāo)標(biāo)簽中點(diǎn)點(diǎn)擊Addd按鈕鈕,將所所帶的所所有jaar包添添加進(jìn)去去,最后后的效果果如下圖圖:然后選擇擇FraameWWorkk標(biāo)簽,在在其中的的Fraamewworkk上選擇擇Strrutss即可。(這里JJbuiildeer會(huì)自自動(dòng)識(shí)別別版本的的)。利用Jbbuilld
54、err創(chuàng)建支支持Sttrucct1.1的工工程:首先建立立一個(gè)jjbuiildeer工程程文件,名名稱可以以自己定定,這里里我使用用的eaasyuuse然后建立立一個(gè)wwar文文件,名名稱可以以自己定定,這里里我使用用的eaasyuuse,注意在在下面的的選項(xiàng)中中使用SStruuts11.1(Strrutss1.11)Frrameeworrks這時(shí)程序序的項(xiàng)目目瀏覽器器內(nèi)容如如下我們可以以看到一一個(gè)Sttrutts1.1節(jié)點(diǎn)點(diǎn)出現(xiàn)在在樹形圖圖中,證證明你前前面的操操作是正正確的。利用Jbbuillderr支持的的Stuuctss對(duì)象創(chuàng)創(chuàng)建向?qū)?dǎo): 當(dāng)當(dāng)我們點(diǎn)點(diǎn)擊新建建按鈕之之后,我我們可以以看
55、到在在 Weeb標(biāo)簽簽下的其其他對(duì)象象。 Sttrutts CConvvertter AActiionFFormmActiionJSP froom AActiionFFormm大家可以以跟著向向?qū)б徊讲揭徊絹韥聿僮?。程序編寫寫任?wù)描述述。 ccreaateBBookk.jssp輸輸入一本本書的標(biāo)標(biāo)題和頁頁碼。 boookvvieww.jssp正常常運(yùn)轉(zhuǎn)之之后,此此界面將將會(huì)獲得得creeateeBoook.jjsp傳傳來的ttitlle參數(shù)數(shù)。 再次提提交之后后,又回回到了ccreaatboook.jspp界面,一一個(gè)循環(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;/這里里的兩個(gè)個(gè)私有屬屬性字段段,對(duì)應(yīng)應(yīng)了crreatteBoook.jspp中的兩兩個(gè)文本本框,SStruuts會(huì)會(huì)自動(dòng)給給它們賦賦/值的的 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會(huì)自動(dòng)動(dòng)調(diào)用AActiionFFormm的vaaliddatee()方方法,來來對(duì)輸入入信息進(jìn)進(jìn)行校驗(yàn)驗(yàn)。/ vvaliidatte()方法返返回為AActiionEErroors,這這如jaava的的Exccepttionn處理機(jī)機(jī)制。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)航定義。對(duì)于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。/FoormBBeann的聲明明 /公共共跳轉(zhuǎn) /acctioon申明明 /屬屬性文件件聲明 A
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車司機(jī)雇傭合同
- 公司勞動(dòng)合同主體變更工作流程
- 山林租賃合同
- 五金電料采購(gòu)合同
- 消防水鶴安裝工程協(xié)議書
- 產(chǎn)品攝影保密協(xié)議
- 手房購(gòu)房意向定金合同書
- 游戲開發(fā)及運(yùn)營(yíng)授權(quán)協(xié)議
- 項(xiàng)目開發(fā)季度工作總結(jié)與反思報(bào)告
- 北京房屋租賃合同電子版7篇
- 保密基本知識(shí)考試試題(100題含答案)
- 新聞攝影培訓(xùn)PPT
- 露天煤礦防治水管理制度
- 電工電子技術(shù)與技能 程周
- PANTONE潘通色卡C面顏色
- 中藥的性能課件
- 平行四邊形的性質(zhì)說課課件- 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 2022新教科版科學(xué)六年級(jí)下冊(cè)全一冊(cè)全部課件(含32課)
- 《數(shù)學(xué)物理方程》全冊(cè)配套課件
- 《煤礦安全規(guī)程》專家解讀(詳細(xì)版)
- 招聘面試流程sop
評(píng)論
0/150
提交評(píng)論