版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
培訓(xùn)體系S培訓(xùn)教程Struts培訓(xùn)教程1概述在這份教程中,我將介紹struts框架和與struts框架有關(guān)的技術(shù)。該教程主要分為以感謝閱讀下幾部分:.MVC模式.Struts的概念和體系結(jié)構(gòu).Struts中主要技術(shù)的介紹.用jBuilder8開發(fā)struts應(yīng)用程序謝謝閱讀2MVC模式所謂的MVC模式,即模型—視圖—控制器(model—view--controller)模式。其結(jié)構(gòu)感謝閱讀圖如下:ViewController.Model端在MVC中,模型是執(zhí)行某些任務(wù)的代碼,而這部分代碼并沒有任何邏輯決定謝謝閱讀它對(duì)用戶端的表示方法。Model感謝閱讀struts框架中,感謝閱讀Model端是用Action和EJB技術(shù)實(shí)現(xiàn)的。謝謝閱讀.View端在MVC模式里,一個(gè)Model可以有幾個(gè)View端,而實(shí)際上復(fù)數(shù)的View端是精品文檔放心下載使用MVCMVC模式可以允許多于一個(gè)的View精品文檔放心下載以在需要的時(shí)候動(dòng)態(tài)的登記上所需要的View..Controller端MVC模式的視圖端是與MVC感謝閱讀交互時(shí),用戶可以通過視窗更新模型的狀態(tài),而這種更新是通過控制器端進(jìn)精品文檔放心下載行的??刂破鞫送ㄟ^調(diào)用模型端的方法更改其狀態(tài)值。與此同時(shí),控制器端謝謝閱讀會(huì)通知所有的登記了的視圖刷新顯示給用戶的表示。在現(xiàn)在的j2eewebserver時(shí)基本上都是采用MVC模式來開發(fā)的,j2ee感謝閱讀規(guī)范也相應(yīng)的為我們提供了技術(shù)支持,請(qǐng)看下圖:12Browse354EJBServer7rJSP1瀏覽器用戶執(zhí)行servlet的doGet方法;感謝閱讀2servletActionservlet的作用就謝謝閱讀好比是controller;3Action調(diào)用EJB層的商務(wù)邏輯程序處理用戶的請(qǐng)求;謝謝閱讀4EJB層返回給Action處理結(jié)果;5Action對(duì)將處理結(jié)果返回給servletAction和EJB共同看成是model謝謝閱讀6servlet將信息發(fā)送給JSP頁面。這里的JSP就相當(dāng)于view;精品文檔放心下載7browser用戶瀏覽JSP頁面;大家可以看到,JSP、servlet和EJB各自在MVC模式中所起到的作用。謝謝閱讀使用MVC的優(yōu)點(diǎn)如下:.可靠性(Reliability):將表示層和處理層完全分開,可以在不重新編譯精品文檔放心下載model和controller的情況下修改view層。感謝閱讀.復(fù)用性和適應(yīng)性(reuse&adaptability):MVC使你可以使用多種view去謝謝閱讀訪問相同的model。.快速開發(fā)(Rapiddeployment):因?yàn)镸VC清晰的將表示層和處理層分開,精品文檔放心下載所以使得不同的程序員可以各司其則,增加開發(fā)速度。.可維護(hù)性(Maintainability):清晰的分層同樣使得代碼清晰、程序的可感謝閱讀維護(hù)性提高。3Struts的概念和體系結(jié)構(gòu).概述struts源自于apache的jakarta工程,是一個(gè)開源代碼工程感謝閱讀(/struts最新的版本是1.2,而jBuilder自帶的版本謝謝閱讀是1.02。struts是一個(gè)完全遵照MVC模型設(shè)計(jì)的,web層的框架。精品文檔放心下載.struts與MVC模式struts是一個(gè)完全遵照MVC模型設(shè)計(jì)的,web層的框架。在struts中,使用到了jsp、感謝閱讀javabean、taglib和servlet技術(shù)。下圖是一個(gè)描述了struts框架的應(yīng)用請(qǐng)求的執(zhí)行路徑:精品文檔放心下載這個(gè)過程大體可以被分成5個(gè)基本步驟:1view發(fā)起一個(gè)請(qǐng)求2ActionServlet(servlet技術(shù)實(shí)現(xiàn))接受這個(gè)請(qǐng)求,它根據(jù)一份xml文件來得到處理謝謝閱讀這個(gè)請(qǐng)求的Action對(duì)象,并將請(qǐng)求發(fā)送給這個(gè)Action對(duì)象。謝謝閱讀3Action對(duì)象接受這個(gè)請(qǐng)求,并調(diào)用model(EJB)去處理這個(gè)請(qǐng)求,并將處理結(jié)果返回精品文檔放心下載給ActionServlet。4ActionServlet根據(jù)Actionview。謝謝閱讀5view得到處理結(jié)果,并將他顯示給用戶。3.1THEMODELStruts框架提供Action作為model的一種實(shí)現(xiàn)。Action是繼承精品文檔放心下載org.apache.struts.action.Action的類,他用來處理用戶的請(qǐng)求,并將處理結(jié)果封裝在謝謝閱讀HttpServletRequest中,返回給ActionServlet。感謝閱讀3.2THEVIEWStruts用JSP、taglib和javabean技術(shù)去實(shí)現(xiàn)view。JSPstruts通過使謝謝閱讀用自己定義的一組taglibjavabean用來保存用戶謝謝閱讀在JSP頁面中的輸入數(shù)據(jù),他用來方便的向Action傳遞用戶輸入數(shù)據(jù)。精品文檔放心下載3.3THECONTROLLERStruts用org.apache.struts.action.ActionServlet去實(shí)現(xiàn)controller的功能。這個(gè)感謝閱讀servlet接收所有JSP頁面發(fā)送的請(qǐng)求,根據(jù)一份配置文件得到處理相應(yīng)用戶請(qǐng)求的謝謝閱讀Action,并調(diào)用Action去處理用戶的請(qǐng)求。當(dāng)Action處理結(jié)束后,ActionServlet接受處感謝閱讀理結(jié)果,并根據(jù)同樣的配置文件將處理結(jié)果發(fā)送當(dāng)相應(yīng)的JSP頁面。精品文檔放心下載4Struts主要技術(shù)介紹4.1相關(guān)技術(shù)學(xué)習(xí)Struts精品文檔放心下載4.1.1JavaBeans大多數(shù)JavaBeans是由JavaBeans來編寫的.謝謝閱讀?TheJavaBeansComponentArchitectureDocumentationpageat,精品文檔放心下載includingalinktodownloadtheJavaBeans1.01Specification精品文檔放心下載?TheJavaBeanTrailintheJavaTutorial謝謝閱讀?JavaBeansComponentsinJSPPagesintheJavaWebServicesTutorial精品文檔放心下載4.1.2反射和內(nèi)省反射機(jī)制是一種決定一個(gè)對(duì)象哪些成員域和成員方法被采用的過程。內(nèi)省技術(shù)是反射機(jī)謝謝閱讀制的一種特殊機(jī)制,Structs使用內(nèi)省技術(shù)轉(zhuǎn)換HTTP參數(shù)為JavaBeanJavaBean謝謝閱讀屬性裝配HTML字段。?TheReflectionTrail?Chapter8oftheJavaBeansAPISpecification精品文檔放心下載4.1.3屬性文件和ResourceBundles感謝閱讀屬性文件屬性文件主要用來設(shè)置程序?qū)傩?,屬性文件的后綴名為.properties,屬性文件的格式類謝謝閱讀似于以下內(nèi)容:book=mycomputerbookpages=120authors=zhfseminar=使用屬性文件java.util包中Properties類用來管理一個(gè)Key/valueProperties類提感謝閱讀供了以下方法:load()方法:Loadingkey/valuepairsintoaPropertiesobjectform謝謝閱讀aStream從一個(gè)輸入流中加載getProperty()方法:Retrievingavaluefromitskey通過關(guān)鍵字來獲得值謝謝閱讀list()方法:Listingthekeysandtheirvalues列舉精品文檔放心下載Save()方法:Savingthepropertiestoastream保存屬性精品文檔放心下載具體例子如下importjava.util.*;importjava.io.*;publicclassuseProperties精品文檔放心下載{publicstaticvoidmain(String[]args)精品文檔放心下載{try{PropertiesdefaultProps=newProperties();感謝閱讀FileInputStreamfile=newFileInputStream("perties");精品文檔放心下載defaultProps.load(file);file.close();defaultProps.list(System.out);精品文檔放心下載System.out.println("getProperty(Stringkey,Stringdefault)="精品文檔放心下載+defaultProps.getProperty("book"));謝謝閱讀FileOutputStreamout=newFileOutputStream("appProperties");謝謝閱讀defaultProps.store(out,"nocomment--");感謝閱讀out.close();}catch(Exceptione){e.printStackTrace();}}}使用本地化數(shù)據(jù)使用本地化數(shù)據(jù),需要建立多個(gè)屬性文件,假設(shè)我們系統(tǒng)中需要支持德文和法感謝閱讀文,我們的默認(rèn)屬性文件為L(zhǎng)abelsBperties文件,那么我們需要建立精品文檔放心下載德文和法文所對(duì)應(yīng)的屬性文件:LabelBundle_pertiesLabelBundle_perties#LabelsBperties內(nèi)容謝謝閱讀s1=computers2=disks3=monitors4=keyboard#LabelsBundle_perties內(nèi)容謝謝閱讀s1=Computers2=Plattes3=Monitors4=Tastatur#LabelsBundle_perties內(nèi)容感謝閱讀s1=Computerfrs2=Plattefrs3=Monitorfrs4=TastaturfrResoureBundle和Locale精品文檔放心下載通過ResourceBundle結(jié)合Locale對(duì)象可以選擇屬性文件:感謝閱讀下面我們給一個(gè)具體的例子importjava.util.*;importjava.io.*;publicclassResourceBundleDemo{感謝閱讀publicstaticvoidmain(String[]args)謝謝閱讀{//采用了德國(guó)設(shè)置LocalecurrentLocal=Locale.GERMAN;感謝閱讀ResourceBundlelabels=ResourceBundle.getBundle("LabelsBundle",currentLocal);感謝閱讀StringmyValue=labels.getString("s2");精品文檔放心下載System.out.println("Local=GERMAN;S2="+myValue);感謝閱讀//采用了法國(guó)設(shè)置currentLocal=Locale.FRENCH;謝謝閱讀labels=ResourceBundle.getBundle("LabelsBundle",currentLocal);精品文檔放心下載myValue=labels.getString("s2");感謝閱讀System.out.println("Local=FRENCH;S2="+myValue);精品文檔放心下載}}更多的內(nèi)容可以查看:?UsingPropertiestoManageProgramAttributesinTheJavaTutorial感謝閱讀?AbouttheResourceBundleClassintheJavaTutorial精品文檔放心下載4.1.4JSP和JSP標(biāo)簽庫Jsp中提供了一些標(biāo)準(zhǔn)的標(biāo)簽:useBean,setProperty/getProperty,include,forward,plugin。感謝閱讀使用例子如:<jsp:useBeanid=”bookname”scope=”page”感謝閱讀class=”test.book”/>這些標(biāo)準(zhǔn)的標(biāo)簽,為操作JavaBean和相應(yīng)請(qǐng)求等提供便利,除此之外,JSP感謝閱讀技術(shù)允許我們自己封裝特有的標(biāo)簽,來簡(jiǎn)化應(yīng)用程序開發(fā)。有經(jīng)驗(yàn)的開發(fā)者可以精品文檔放心下載利用標(biāo)簽處理表單,訪問數(shù)據(jù)庫或其他企業(yè)服務(wù)(如e-mail精品文檔放心下載標(biāo)簽的主要技術(shù)可以在JSP頁面中設(shè)置標(biāo)簽的參數(shù)。可以訪問JSP頁面中所有的對(duì)象??梢垣@得JSP頁面的Response對(duì)象。標(biāo)簽之間互相通訊。標(biāo)簽可以被嵌套,實(shí)現(xiàn)標(biāo)簽的多層使用。標(biāo)簽的使用為了能夠在jspTagSupport類的java程序,精品文檔放心下載然后通過tld文件,定義該標(biāo)簽的屬性,然后通過web.xml聲明這個(gè)tld文件,最后才可以感謝閱讀在JSP頁面中使用標(biāo)簽的。下面我還是根據(jù)例子來簡(jiǎn)單講一下詳細(xì)代碼下src/taguse目錄下。.1定制標(biāo)簽類packagecom.zhfelva.tag;importjavax.servlet.jsp.*;謝謝閱讀importjavax.servlet.jsp.tagext.*;精品文檔放心下載importjava.io.*;/***一個(gè)顯示當(dāng)前時(shí)間的標(biāo)簽*/publicclassCurrentTimeTagextendsTagSupport{感謝閱讀publicintdoStartTag(){try{JspWriterout=pageContext.getOut();謝謝閱讀java.util.Datedt=newjava.util.Date(System.currentTimeMillis());感謝閱讀out.print(dt.getHours()+":"+dt.getMinutes()+":"+dt.getSeconds());精品文檔放心下載}catch(IOExceptionioe){精品文檔放心下載System.out.println("ErrorinCurrentTimeTag:"+ioe);精品文檔放心下載}return(SKIP_BODY);}}.2編寫標(biāo)簽定義文件放于\WEB-INF\taglib\mytaglib.tld感謝閱讀<?xmlversion="1.0"encoding="ISO-8859-1"?>感謝閱讀<!DOCTYPEtaglibPUBLIC"-//SunMicrosystems,Inc.//DTDJSPTagLibrary精品文檔放心下載1.1//EN""/j2ee/dtds/Web-jsptaglibrary_1_1.dtd">感謝閱讀<!--ataglibrarydescriptor-->精品文檔放心下載<taglib><tlibversion>1.0</tlibversion>精品文檔放心下載<jspversion>1.1</jspversion>謝謝閱讀<shortname>currenttime</shortname>感謝閱讀<uri></uri><info>Ataglibraryforshowcurrenttime感謝閱讀</info><tag><name>CurrentTime</name><tagclass>com.zhfelva.tag.CurrentTimeTag</tagclass>精品文檔放心下載<bodycontent>EMPTY</bodycontent>精品文檔放心下載<info>showcurrenttime</info>感謝閱讀</tag></taglib>.3在web.xml中進(jìn)行配置一個(gè)網(wǎng)頁應(yīng)用程序要在web.xml中聲明他要使用的標(biāo)簽庫:感謝閱讀<?xmlversion="1.0"encoding="gb2312"?>精品文檔放心下載<!DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication感謝閱讀2.3//EN""/j2ee/dtds/web-app_2.3.dtd">謝謝閱讀<web-app><taglib><taglib-uri>my-taglib</taglib-uri><taglib-location>/WEB-INF/taglib/mytaglib.tld感謝閱讀</taglib-location></taglib></web-app>.4簡(jiǎn)單標(biāo)簽的使用以上配置做好之后,就可以在JSP頁面中使用標(biāo)簽了:精品文檔放心下載currenttime.jsp<%@pagecontentType="text/html;charset=gb2312"%>感謝閱讀<%@tagliburi="my-taglib"prefix="mytag"%>精品文檔放心下載<HTML><HEAD><TITLE>顯示當(dāng)前時(shí)間-JSP/TagLib</TITLE>謝謝閱讀</HEAD><BODY><H1>顯示當(dāng)前時(shí)間-JSP/TagLib</H1>精品文檔放心下載<mytag:CurrentTime/></BODY></HTML>Struts中真正將標(biāo)簽庫應(yīng)用了起來,大家可以從中看到標(biāo)簽庫的強(qiáng)大功能。感謝閱讀更多的內(nèi)容可以查看:?TheJavaServerPagesTechnologypageat精品文檔放心下載?TheJSP1.1and1.2Specificationsdownloadpageat感謝閱讀?JavaServerPagesTechnologyintheJavaWebServicesTutorial謝謝閱讀?CustomTagsinJSPPagesintheJavaWebServicesTutorial精品文檔放心下載4.1.5XML相關(guān)技術(shù)這里,相關(guān)的內(nèi)容非常多,而且很重要,相信大家也都熟悉XML技術(shù),由于時(shí)間關(guān)系,精品文檔放心下載這里就不做講述了。4.2主要技術(shù)4.2.1Struts體系結(jié)構(gòu)控通過Struts體系圖大家可以看到有一個(gè)XML文件Struts-config.xml,謝謝閱讀與之相關(guān)聯(lián)的是Controller,在Struts中,承擔(dān)MVC中Controller角色的是一謝謝閱讀個(gè)Servlet,叫ActionServlet。ActionServlet是一個(gè)通用的控制組件。這個(gè)控謝謝閱讀制組件提供了處理所有發(fā)送到Struts的HTTP請(qǐng)求的入口點(diǎn)。它截取和分發(fā)這些謝謝閱讀請(qǐng)求到相應(yīng)的動(dòng)作類(這些動(dòng)作類都是Action精品文檔放心下載用相應(yīng)的請(qǐng)求參數(shù)填充ActionFrom(通常稱之為FromBean,感謝閱讀常稱之為ActionBeanjavabean或調(diào)精品文檔放心下載用EJB。最后動(dòng)作類把控制權(quán)傳給后續(xù)的JSP文件,后者生成視圖。所有這些控感謝閱讀制邏輯利用Struts-config.xml文件來配置。精品文檔放心下載視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP標(biāo)簽庫:感謝閱讀Html,Bean,Logic,Template等,這有利于分開表現(xiàn)邏輯和程序邏輯。精品文檔放心下載模模型以一個(gè)或多個(gè)javabean的形式存在。這些beanAction感謝閱讀FormActionJavaBeanorEJBActionForm通常稱之為FormBean精品文檔放心下載自于Client的用戶請(qǐng)求信息,如表單信息。Action通常稱之為ActionBean,獲感謝閱讀取從ActionSevlet傳來的FormBean,取出FormBean中的相關(guān)信息,并做出相關(guān)感謝閱讀的處理,一般是調(diào)用JavaBean或EJB等。精品文檔放心下載流在Struts中,用戶的請(qǐng)求一般以*.do作為請(qǐng)求服務(wù)名,所有的*.do請(qǐng)精品文檔放心下載求均被指向ActionSevletActionSevlet根據(jù)Struts-config.xml中的配置信息,精品文檔放心下載將用戶請(qǐng)求封裝成一個(gè)指定名稱的FormBean,并將此FormBean傳至指定名稱的謝謝閱讀ActionBean,由ActionBean完成相應(yīng)的業(yè)務(wù)操作,如文件操作,數(shù)據(jù)庫操作等。精品文檔放心下載每一個(gè)*.do均有對(duì)應(yīng)的FormBean名稱和ActionBean名稱,這些在感謝閱讀Struts-config.xml中配置。4.2.2Struts的基本組件包整個(gè)struts大約有15200感謝閱讀此我們不能一一介紹,只能列舉幾個(gè)主要的簡(jiǎn)要的介紹一下。下表說明了目前謝謝閱讀strutsapiaction,actions,taglib5精品文檔放心下載現(xiàn)了這幾個(gè)組件包之間的關(guān)系。其中action是整個(gè)strutsframework的核心感謝閱讀org.apache.struts.action基本上,控制整個(gè)strutsframework的運(yùn)行的核心類、組件都在這個(gè)包中,比如我們上面提到謝謝閱讀的控制器ActionServlet,Action,ActionForm,ActionMapping等等。struts1.1比1.0多了精品文檔放心下載DynaActionForm類。增加了動(dòng)態(tài)擴(kuò)展生成FormBean功能感謝閱讀org.apache.struts.actions這個(gè)包是主要作用是提供客戶的http請(qǐng)求和業(yè)務(wù)邏輯處理之間的特定適配器轉(zhuǎn)換功能,而1.0精品文檔放心下載版本中的部分動(dòng)態(tài)增刪FromBean的類,也在struts1.1中被Action包的DynaActionForm組件感謝閱讀所取代org.apache.struts.taglibBeanTagsHTMLTagsLogicTags,精品文檔放心下載NestedTags,TemplateTags這幾個(gè)用于構(gòu)建用戶界面的標(biāo)簽類。精品文檔放心下載對(duì)于Struts如何控制、處理客戶請(qǐng)求,讓我們通過對(duì)struts的四個(gè)核心組件介紹來具精品文檔放心下載體說明。這幾個(gè)組件就是:ActionServlet。ActionClasses,ActionMapping(此處包括謝謝閱讀ActionForwardActionFromBean。謝謝閱讀4.2.3StrutsActionServletActionServlet繼承自javax.servlet.http.HttpServlet類,其在Struts感謝閱讀framework中扮演的角色是控制器,參看上面的“Struts體系圖??刂破髦x謝閱讀ActionServlet主要負(fù)責(zé)將客戶的HTTP請(qǐng)求信息組裝后,根據(jù)配置文件的指定描感謝閱讀述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥?。按照Servelt的標(biāo)準(zhǔn),所有得Servlet必須在web配精品文檔放心下載置文件(web.xml)聲明。同樣,ActoinServlet必須在WebApplication配置文謝謝閱讀件(web.xml)中描述,有關(guān)配置信息,后面將會(huì)介紹。謝謝閱讀當(dāng)用戶向服務(wù)器端提交請(qǐng)求的時(shí)候,實(shí)際上信息是首先發(fā)送到控制器謝謝閱讀ActionServlet,一旦控制器獲得了請(qǐng)求,其就會(huì)將請(qǐng)求信息傳交給一些輔助類謝謝閱讀(helpclasses)處理。這些輔助類知道如何去處理與請(qǐng)求信息所對(duì)應(yīng)的業(yè)務(wù)操精品文檔放心下載作。在Struts中,這個(gè)輔助類就是org.apache.struts.action.Action。通常開精品文檔放心下載發(fā)者需要自己繼承Aciton類,從而實(shí)現(xiàn)自己的Action實(shí)例。感謝閱讀4.2.4StrutsActionClasses精品文檔放心下載ActionAction類中最為常用精品文檔放心下載的是execute()方法。publicActionForwardexecute(ActionMappingmapping,謝謝閱讀ActionFormform,javax.servlet.ServletRequestrequest,感謝閱讀javax.servlet.ServletResponseresponse)感謝閱讀throwsjava.io.IOException,javax.servlet.ServletException謝謝閱讀當(dāng)Controller收到客戶的請(qǐng)求的時(shí)候,就會(huì)將請(qǐng)求轉(zhuǎn)移到一個(gè)Action實(shí)例,然后會(huì)調(diào)精品文檔放心下載用這個(gè)Action實(shí)例的execute()方法。StrutsFramework為應(yīng)用系統(tǒng)中的每一個(gè)Action精品文檔放心下載Action類運(yùn)行在一個(gè)多線程的環(huán)境中。精品文檔放心下載ActionexecuteAction類在默認(rèn)精品文檔放心下載情況下是返回null的。4.2.5StrutsActionMapping謝謝閱讀上面講到了一個(gè)客戶請(qǐng)求是如何被控制器轉(zhuǎn)發(fā)和處理的,但是,控制器如何知道什么樣精品文檔放心下載的信息轉(zhuǎn)發(fā)到什么樣的Action類呢?這就需要一些與動(dòng)作和請(qǐng)求信息相對(duì)應(yīng)的映射配置說明。謝謝閱讀在struts中,這些配置映射信息是存儲(chǔ)在特定的XML文件(struts-config.xml精品文檔放心下載strutsframework精品文檔放心下載<action>元素都與org.apache.struts.action.ActionMapping類的一個(gè)實(shí)例精品文檔放心下載對(duì)應(yīng)。下表就顯示了一個(gè)登陸的配置映射。PathJSP<html:form>時(shí)的actionJSP感謝閱讀頁面和處理這個(gè)JSP頁面的Action對(duì)象對(duì)應(yīng)起來。謝謝閱讀Type:對(duì)應(yīng)的Action子類的完整類名。Name:對(duì)應(yīng)的ActionForm<form-bean>元素的name屬性相應(yīng)。感謝閱讀Scope:這個(gè)屬性表示相對(duì)應(yīng)的ActionFormbean的scope屬性。它的值可以是“page”、感謝閱讀“request”“session”和“application”。分別對(duì)應(yīng)javabean的“page”、精品文檔放心下載“request”“session”和“application”屬性。感謝閱讀Input:這個(gè)屬性表示如果對(duì)應(yīng)的ActionForm的validate方法返回值的ActionErrors非精品文檔放心下載空,即ActionForm的屬性沒有通過校驗(yàn),則跳轉(zhuǎn)到當(dāng)前的頁面。謝謝閱讀Validate:是否調(diào)用FormBean的validate()精品文檔放心下載息了。True表示需要調(diào)用validate方法;false表示不需要調(diào)用validate精品文檔放心下載方法。forward:定義可能的跳轉(zhuǎn)路徑。Name屬性表示Action類的execute感謝閱讀結(jié)果時(shí)的參數(shù);path表示將要跳轉(zhuǎn)到的頁面的路徑。/logonAction.do提交請(qǐng)求信息的時(shí)候,控制器將信息委托精品文檔放心下載com.test.LogonAction處理。調(diào)用LogonAction實(shí)例的execute()方法。同時(shí)將Mapping實(shí)感謝閱讀例和所對(duì)應(yīng)的LogonFormBeanname=LogonFormform-bean元素所聲感謝閱讀明的ActionFormBean。有關(guān)form-bean的聲明如下顯示。感謝閱讀<form-bean>有兩個(gè)屬性:nameActionForm的名字,他與被JSP頁面中的<HTML:form>元素的name屬性應(yīng)感謝閱讀ActionForm精品文檔放心下載name“LoginForm”<HTML:form>元素的name屬性也應(yīng)精品文檔放心下載該是“LoginForm”。TypeActionForm對(duì)象的完整類名。這個(gè)屬性和JSP頁面中的<HTML:form>謝謝閱讀元素的type屬性是相對(duì)應(yīng)的。在此稍稍說一下有關(guān)global-forwards的概念。其在配置文件中描述了整個(gè)應(yīng)用系統(tǒng)可精品文檔放心下載以使用的ActionForward,而不是僅僅是一個(gè)特定的Action。精品文檔放心下載<global-forwards><forwardname="logout"path="/logout.do"/>謝謝閱讀<forwardname="error"path="/error.jsp"/>感謝閱讀</global-forwards><global-forwards>元素用來表示全局的跳轉(zhuǎn)頁面。和<action>元素一樣,他有無數(shù)個(gè)精品文檔放心下載<forward>元素。當(dāng)一個(gè)Action對(duì)象的execute方法執(zhí)行完畢以后,如果他返回的感謝閱讀ActionForward對(duì)象沒有在這個(gè)<action>元素的<forward>子元素中有對(duì)應(yīng)值的話,他將要查謝謝閱讀找<global-forwards>中的<forward>元素,并跳轉(zhuǎn)到相應(yīng)頁面。感謝閱讀前面我們講過StrutsStruts如何知道屬性精品文檔放心下載文件的路徑呢,也在struts-config.xml文件來配置:謝謝閱讀<message-resourcesparameter="test.ApplicationResources"/>精品文檔放心下載<message-resource>元素用來表示ApplicationRperties文件的位置。這謝謝閱讀個(gè)元素有一個(gè)屬性――parameterApplicationRperties文精品文檔放心下載件的存放地點(diǎn),但有意思的是,他是用一個(gè)類名來來表示存放路徑的。比如“com.精品文檔放心下載ApplicationResources”是表示存放在WEB-INF/classes/com路徑下面的謝謝閱讀ApplicationRperties文件。上圖表示的文件路徑為WEB-INF/classes謝謝閱讀/test/ApplicationRperties。謝謝閱讀注意:以上所述的這些元素在struts-config.xml文件中的位置也是有先后順序的。它感謝閱讀們的順序是:<form-beans><global-forwards><actions><message-resources>4.2.6StrutsActionFormBean感謝閱讀在上面講解ActionServletActionClasses和ActionMapping精品文檔放心下載ActionFormBean的概念。ActionForm的主要功能就是為Action的操作提供提交表單相映射精品文檔放心下載的數(shù)據(jù)。對(duì)于每一個(gè)客戶請(qǐng)求,Strutsframework在處理ActionForm精品文檔放心下載幾個(gè)步驟:(1)檢查Action的映射,確定Action中已經(jīng)配置了對(duì)ActionForm的映射感謝閱讀(2)根據(jù)name屬性,查找formbean的配置信息精品文檔放心下載(3)檢查Action的formbean的使用范圍,確定在此范圍下,是否已經(jīng)有此form謝謝閱讀bean的實(shí)例。(4)假如當(dāng)前范圍下,已經(jīng)存在了此formbean的實(shí)例,而是對(duì)當(dāng)前請(qǐng)求來說,是同謝謝閱讀一種類型的話,那么就重用。(5)否則,就重新構(gòu)建一個(gè)formbean的實(shí)例精品文檔放心下載(6)formbean的reset()方法備調(diào)用精品文檔放心下載(7)調(diào)用對(duì)應(yīng)的setter方法,對(duì)狀態(tài)屬性賦值(8)如果validatede的屬性北設(shè)置為true,那么就調(diào)用formbean的validate()方謝謝閱讀法。4.3例子講解在這一部分,我將根據(jù)一個(gè)簡(jiǎn)單的例子去詳細(xì)的介紹一下struts框架的具體用法。感謝閱讀4.3.1環(huán)境安裝利用Jbuilder8.0使用Struts1.1(版本)感謝閱讀目前Jbuilder中默認(rèn)帶的都是struts1.0版本,我們使用的是struts1.1版本,感謝閱讀所以需要手動(dòng)的配置相關(guān)的類庫第一步:Struts1.1版本的獲得可以通過訪問的方式來下載,也可以從我機(jī)器的共享目錄拷貝:感謝閱讀IP:50或機(jī)器名zhfUser:guestPWD:空內(nèi)容:src文件夾下有Jarkarta-struts-1.1-rc1感謝閱讀Jarkarta-struts-1.1-rc1-src感謝閱讀Example_struts(例子文件源代碼,可以用Jbuilder直接打精品文檔放心下載開)Properties(屬性文件使用例子)Taguse(taglib例子)還有一些資料。第二步:Jbuilder配置Struts1.1首先將Struts1.1文件(包括源碼)拷貝至jbuilder/thirdparty目錄下:謝謝閱讀打開jbuilder,選擇tools/configurelibraries,在彈出的窗口上點(diǎn)擊new按鈕謝謝閱讀Name:struts1.1Location:Jbuilder點(diǎn)擊Ok,回到剛才的界面,你會(huì)看到多出的一項(xiàng)struts1.1,選中它,在右邊的class標(biāo)感謝閱讀簽中點(diǎn)擊Add按鈕,將所帶的所有jar包添加進(jìn)去,最后的效果如下圖:謝謝閱讀然后選擇FrameWork標(biāo)簽,在其中的Framework上選擇Struts即可。精品文檔放心下載(這里Jbuilder會(huì)自動(dòng)識(shí)別版本的)。利用Jbuilder創(chuàng)建支持Struct1.1的工程:精品文檔放心下載首先建立一個(gè)jbuilder工程文件,名稱可以自己定,這里我使用的easyuse精品文檔放心下載然后建立一個(gè)war文件,名稱可以自己定,這里我使用的easyuse,注意在下面的選項(xiàng)中精品文檔放心下載使用Struts1.1(Struts1.1)Frameworks精品文檔放心下載這時(shí)程序的項(xiàng)目瀏覽器內(nèi)容如下我們可以看到一個(gè)Struts1.1節(jié)點(diǎn)出現(xiàn)在樹形圖中,證明你前面的操作是正確的。精品文檔放心下載利用Jbuilder支持的Stucts對(duì)象創(chuàng)建向?qū)В褐x謝閱讀當(dāng)我們點(diǎn)擊新建按鈕之后,我們可以看到在Web標(biāo)簽下的其他對(duì)象。精品文檔放心下載StrutsConverterActionFormActionJSPfromActionForm大家可以跟著向?qū)б徊揭徊絹聿僮鳌?.3.2程序編寫任務(wù)描述。createBook.jsp輸入一本書的標(biāo)題和頁碼。謝謝閱讀bookview.jsp正常運(yùn)轉(zhuǎn)之后,此界面將會(huì)獲得createBook.jsp傳來的title參數(shù)。感謝閱讀再次提交之后,又回到了creatbook.jsp界面,一個(gè)循環(huán)過程。感謝閱讀ActionForm類為了便于講述,我在講解內(nèi)容寫入代碼中。packagetest;importjava.util.*;importorg.apache.struts.action.*;精品文檔放心下載importorg.apache.struts.validator.ValidatorForm;謝謝閱讀importjavax.servlet.http.*;感謝閱讀publicclassBookActionFormextendsActionForm{謝謝閱讀//這里要求所有的自己編寫的FormBean必須繼承ActionForm感謝閱讀privateStringtitle="";privateintpages=0;//createBook.jsp中的兩個(gè)文本框,Struts會(huì)自動(dòng)給它們精品文檔放心下載賦//值的publicvoidsetTitle(Stringtitle)精品文檔放心下載{this.title=title;}publicStringgetTitle(){returnthis.title;}publicvoidsetPages(intpages)精品文檔放心下載{this.pages=pages;}publicintgetPages(){returnthis.pages;}//Stuts會(huì)自動(dòng)調(diào)用ActionForm的validate()方法,來對(duì)輸入信息進(jìn)行校驗(yàn)。精品文檔放心下載//validate()方法返回為ActionErrors,這如java的Exception處理機(jī)制。感謝閱讀publicActionErrorsvalidate(ActionMappingactionMapping,HttpServletRequest感謝閱讀httpServletRequest){ActionErrorserrors=newActionErrors();謝謝閱讀if((title==null)||(title.length()<3))謝謝閱讀{errors.add("Title",newActionError("error.book.title"));感謝閱讀}if(pages<1){errors.add("Page",newActionError("error.book.page"));感謝閱讀}returnerrors;}publicvoidreset(ActionMappingactionMapping,HttpServletRequest謝謝閱讀httpServletRequest){title=null;pages=0;}}Struts-config.xml這是Struts核心文件,Struts-config.xml集中了所有頁面的導(dǎo)航定義。對(duì)感謝閱讀于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的精品文檔放心下載開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握謝謝閱讀Struts的關(guān)鍵所在。<?xmlversion="1.0"encoding="UTF-8"?>感謝閱讀<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStruts謝謝閱讀Configuration1.1//EN""/struts/dtds/struts-config_1_1.dtd">謝謝閱讀<struts-config>//FormBean的聲明<form-beans><form-beanname="bookActionForm"精品文檔放心下載type="test.BookActionForm"/>感謝閱讀</form-beans>//公共跳轉(zhuǎn)<global-forwards><forwardname="bookCreated"path="/bookview.jsp"/>謝謝閱讀<forwardname="first"path="/createBook.jsp"/>感謝閱讀</global-forwards>//action申明<action-mappings><actionpath="/createBook"感謝閱讀type="test.BookAction"attribute="bookActionForm"謝謝閱讀name="bookActionForm"scope="request"validate="true"input="/createBook.jsp"/>精品文檔放心下載</action-mappings>//屬性文件聲明<message-resourcesparameter="test.ApplicationResources"/>感謝閱讀</struts-config>Action類packagetest;importorg.apache.struts.action.*;精品文檔放心下載importjavax.servlet.http.*;感謝閱讀publicclassBookActionextendsAction{精品文檔放心下載//這里要求所有的自己編寫的Action子類必須繼承Action感謝閱讀publicActionForwardexecute(ActionMappingactionMapping,ActionForm感謝閱讀actionForm,HttpServletRequesthttpServletRequest,HttpServletResponse感謝閱讀httpServletResponse){System.out.println("Startperform("+actionForm+")");感謝閱讀//我們首先從request中獲得參數(shù)Stringtitle=httpServletRequest.getParameter("title");感謝閱讀StringstrPages=httpServletRequest.getParameter("pages");謝謝閱讀System.out.println("getParametertitle:"+title);謝謝閱讀System.out.println("getParameterPages:"+strPages);感謝閱讀System.out.println("runinthis");感謝閱讀//我們?cè)購(gòu)腇ormBean中獲得參數(shù)title=((BookActionForm)actionForm).getTitle();謝謝閱讀strPages=""+((BookActionForm)actionForm).getPages();感謝閱讀System.out.println("afterBookActionForm");精品文檔放心下載System.out.println("BookActionFormtitle:"+title);感謝閱讀System.out.println("BookActionFormPages:"+strPages);感謝閱讀//跳轉(zhuǎn)returnactionMapping.findForward("bookCreated");感謝閱讀}}應(yīng)用程序?qū)傩晕募氖褂迷赾lasses/test目錄下創(chuàng)建一個(gè)ApplicationRperties的文件(此路徑在感謝閱讀strut-config.xml中定義),打開它,內(nèi)容如下謝謝閱讀index.title=Struts簡(jiǎn)單應(yīng)用index.content=這是Struts的一個(gè)簡(jiǎn)單應(yīng)用謝謝閱讀error.book.title=<li>書名最少要有3個(gè)字符</li>精品文檔放心下載error.book.page=<li>一本書的頁數(shù)最少要大于1頁</li>感謝閱讀errors.header=<h3><fontcolor="red">錯(cuò)誤<UL>謝謝閱讀errors.footer=</UL></font><HR>感謝閱讀crea
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于大學(xué)生對(duì)學(xué)校組織愛心活動(dòng)的關(guān)注及其背后真實(shí)心理的調(diào)查
- 國(guó)有企業(yè)2024年工作情況總結(jié)及2025年工作計(jì)劃
- 2024-2030年中國(guó)金融系列行業(yè)市場(chǎng)全景分析及投資前景展望報(bào)告
- 電力工程招投標(biāo)過程中的風(fēng)險(xiǎn)分析與管理措施
- 壽衣知識(shí)培訓(xùn)課件
- 二零二五年度合同管理部門合同履行進(jìn)度監(jiān)控與預(yù)警合同3篇
- 2025年全力以赴向未來工作計(jì)劃
- “三孩”政策下上海嬰幼兒托育服務(wù)發(fā)展現(xiàn)狀分析及對(duì)策
- 2025年度建筑智能化系統(tǒng)集成安裝與維護(hù)服務(wù)合同
- 二零二五年度企業(yè)搬遷搬遷運(yùn)輸服務(wù)合同2篇
- 《小學(xué)生良好書寫習(xí)慣培養(yǎng)的研究》中期報(bào)告
- 大學(xué)英語四級(jí)詞匯表(下載)
- 2025年四川成都市溫江區(qū)市場(chǎng)監(jiān)督管理局選聘編外專業(yè)技術(shù)人員20人歷年管理單位筆試遴選500模擬題附帶答案詳解
- 手術(shù)室發(fā)生地震應(yīng)急預(yù)案演練
- 初中數(shù)學(xué)新課程標(biāo)準(zhǔn)(2024年版)
- 高職院校專業(yè)教師數(shù)字素養(yǎng)架構(gòu)與提升路徑
- 售后服務(wù)人員培訓(xùn)資料課件
- 2024-2030年中國(guó)薯?xiàng)l行業(yè)發(fā)展趨勢(shì)及投資盈利預(yù)測(cè)報(bào)告
- 生命智能學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 專項(xiàng)14-因式分解-專題訓(xùn)練(50道)
- 中華傳統(tǒng)文化之戲曲瑰寶學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論