




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JSP程序設(shè)計(jì)從到精第1篇Struts基礎(chǔ)第1章Struts概 JSPFramework-Struts介 Struts的體系結(jié) Struts1.0學(xué)習(xí)文 JSP流行模板Struts的安裝配 Struts用戶指 你的第一個(gè)struts應(yīng)用程 第2章深入Struts結(jié) 人介紹應(yīng)用框架mvc和 Struts原理、開發(fā)及項(xiàng)目實(shí) 使用STRUST控制 討論STRUTS的優(yōu)缺 Struts經(jīng) 用strtus制作登陸頁(yè)面 第3章Struts基礎(chǔ)學(xué) Struts標(biāo)記 Struts框架基礎(chǔ) Struts-configxml配置文件講解3.4struts中文問(wèn)題","struts問(wèn)題"??終極解決方 為Web服務(wù)構(gòu)建Struts應(yīng)用程 Struts標(biāo)記庫(kù)是如何工作 struts簡(jiǎn)單例子的分析(含代碼注釋和配置文件說(shuō)明 本章小 第4章配置STRUTS組 Web應(yīng)用部署描述 STRUTS配置文 ANT的構(gòu)建文 struts中的日 運(yùn)用你的 第5章理解 ActionForm的生命周 ActionForm的作 ActionForm的實(shí) 組裝 Struts的動(dòng)態(tài)表單的應(yīng) 第2篇struts的執(zhí) 第6章理解 ActionForward的最佳實(shí) 第7章設(shè)計(jì) 定義ActionMap屬 第8章設(shè)計(jì)、使用 理解 Action的實(shí) Struts中的Action類的工作機(jī)制 Struts中不同的Action和ActionForm組 第9章Struts內(nèi)置機(jī) Struts內(nèi)置類 Struts內(nèi)置類 Struts令牌機(jī)制,防止重復(fù)提 StrutsAction單態(tài)陷阱,請(qǐng)謹(jǐn)慎使用全局變 Struts異常處 第10章struts中使用 struts程序嘗 Java對(duì)i18n的支 struts框架中對(duì)的支 第11章Validator驗(yàn)證框 安裝和配置Validator驗(yàn)證框 Validator框架和Struts客戶化在Validator框架中使用 在struts中用validator作服務(wù)器端驗(yàn) 第12章StrutsHTML Struts中基本的HTMLStruts中表單處理的HTMLStruts中復(fù)選框和單選框的HTMLStruts下JSP頁(yè)面?zhèn)鬟f復(fù)選框值技 Struts中下拉和選取/選項(xiàng)列表的HTMLStruts中html:errors的HTMLStruts中使用<htmlfile>上傳文 第13章StrutsBean 如何獲得Servlet上下文的有關(guān)內(nèi) 如何獲得Java資 如何獲得Bean屬 使用StrutsBean保存與傳輸數(shù)據(jù)小實(shí) 第14章StrutsLogic 如何使用Logic進(jìn)行基于值的條件顯 如何使用Logic進(jìn)行字符串匹 如何使用Logic來(lái)檢測(cè)值是否存 如何使用Logic來(lái)迭 如何使用Logic標(biāo)記來(lái)轉(zhuǎn)移控 o.jsp中使用StrutsLogic 第15章Tiles struts中使用tiles組 Tiles使用第3篇案例精 第16章Struts分頁(yè)顯 建立并配置struts-configxml和webxml文 第17章文章管理系 系統(tǒng)概 數(shù)據(jù)連 文章管理系統(tǒng)設(shè) 文章管理系統(tǒng)操作模 文章管理系統(tǒng)的測(cè)試與發(fā) 文章管理系統(tǒng)測(cè)試案 本章小 JSPJSP的運(yùn)行系統(tǒng),基本概念,語(yǔ)范及其相關(guān)內(nèi)容,從基本的JSP概述、與其他技術(shù)的對(duì)比,到JSP的運(yùn)行系統(tǒng)JSP開發(fā)的一本很易上手的工具書。備絡(luò)的知識(shí),進(jìn)行網(wǎng)絡(luò)開發(fā)或者建立自己的個(gè)人站點(diǎn)。Web。這是一個(gè)交互的概念,一般把提出請(qǐng)求的一方稱為客就引出了我們所說(shuō)的頁(yè)的概念。Web空間中,有幾十萬(wàn)乃至上百萬(wàn)的站點(diǎn)相互之間正在進(jìn)行著激烈的競(jìng)爭(zhēng),他們想盡一切辦法來(lái)吸戶的注意力。簡(jiǎn)單的、靜態(tài)的頁(yè)面對(duì)用戶不會(huì)有太大的。只有動(dòng)樂(lè)于的界面。當(dāng)然,數(shù)據(jù)的自動(dòng)更新也非常的重要。你可能會(huì)說(shuō),這怎么聽起來(lái)像是在在,我們可以在Web頁(yè)面中創(chuàng)建應(yīng)用程序、數(shù)據(jù)庫(kù),這樣它無(wú)論在感覺上、操作中還Windows目前的客戶員工以及其他人中的任何一個(gè)并實(shí)施一些的服務(wù)類的商業(yè)活動(dòng)JavaBeanWebDB2Sybase也覽器在Internet上騰飛的網(wǎng)景公司,現(xiàn)在也已推出自己的WebServer及完整的Web開在這種情況下,SUN公司也不甘,在它的倡導(dǎo)下,許多公司共同參與建立了一種新的頁(yè)技術(shù)標(biāo)準(zhǔn)一一JavaServerPages。SUN應(yīng)用Java社團(tuán)性過(guò)程開發(fā)JSP技術(shù)。JSP規(guī)范的過(guò)程中,SUNWeb服務(wù)器、Web應(yīng)用服務(wù)器和JSP的產(chǎn)品,SUN授MacromediaAPacheNetscape及其他人。最近,SUN將版本的JSP和JavaServlet(JSP1.1,JavaServlet2.2)的源代碼給Apache,以求JSP與Apache緊密結(jié)合、共同發(fā)展。Apache,SUN和許多其他的公司及個(gè)人公開成立了一個(gè)健壯的以便任何公司和個(gè)人都能免費(fèi)取得信息。這樣,SUN公司就在這個(gè)領(lǐng)域中穩(wěn)穩(wěn)地站住了腳跟。JavaServerPagesWeb技術(shù),目前在國(guó)內(nèi)還沒(méi)有受到它應(yīng)有的重視。起步。這種狀況,給我國(guó)的Web發(fā)展創(chuàng)造了一個(gè)不可多得的機(jī)遇。我們可以借此機(jī)會(huì)JSP技術(shù)為非專業(yè)人員開發(fā)高水平的提供了良好的工具但是應(yīng)該通過(guò)什么途徑來(lái)JSP技術(shù)方面的知識(shí)寫成本書,與大家,使得的人加入到我們的行列。本書在編寫過(guò)程中,汲取了很多中關(guān)于JSP技術(shù)的精華并加以綜合,形成了一個(gè)較完了JSP的運(yùn)行系統(tǒng),基本概念,語(yǔ)范及其相關(guān)內(nèi)容,并提供了大量的應(yīng)用實(shí)例。8JSPJSP的運(yùn)行系統(tǒng)和模式,逐步深入地對(duì)JSP語(yǔ)范進(jìn)行了詳細(xì)的講解,并結(jié)合應(yīng)用實(shí)例加以鞏固。1Struts基礎(chǔ)理想介紹,它首先介紹了創(chuàng)建代碼塊,比如JSP語(yǔ)法、元素、隱含對(duì)象和標(biāo)記庫(kù)。隨JSP環(huán)境安裝配置進(jìn)行講解,JSPJsp程序JSPWEB開發(fā)時(shí)基本操作,最后通過(guò)一個(gè)小實(shí)例,對(duì)本章所學(xué)進(jìn)行鞏1StrutsFramework的概念和體系簡(jiǎn)介Struts的概念和體系結(jié)構(gòu)Struts的工作原理和組件Struts配置文件簡(jiǎn)介StrutsStruts1、Framework2、Struts3、StrutsJSPFrameworkStruts一直以來(lái)我們都說(shuō)Struts是一個(gè)WebFramework。那么讓我么先來(lái)看看什么是Framework。Framework的體系提供了一套明確機(jī)制,從而讓開發(fā)人員很容易的擴(kuò)展和FrameworkFramework的結(jié)構(gòu)中都有一個(gè)“命令和控制”組件("commandandcontrolcomponent)——FrameworkFactoryandManager控制器(Controller)——Framework中各個(gè)組件的協(xié)調(diào)工作業(yè)務(wù)邏輯層(BusinessLogic)——對(duì)Framwork本身來(lái)說(shuō),這里僅僅只是概念和幾個(gè)提夠服Framework上再次數(shù)據(jù)邏輯層(DataLogic)——絕大應(yīng)用系統(tǒng)都需要涉及到數(shù)據(jù)交互,這一層次主要包括了Struts是采用JavaServlet/JavaServerPages技術(shù),開發(fā)WebframeworkStrutsMVC(Model-View-Controller)設(shè)計(jì)模式的應(yīng)用構(gòu)架。Struts有如下的主要功能:包含一個(gè)controllerservletActionJSPtagcontrollerservlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)提供了一系列實(shí)用對(duì)象:XMLJavareflectionAPIsJavaBeans屬性、Struts是Jakarta項(xiàng)目的一部分,主頁(yè)在Version0.5的地址1、模型modelVB,DelphiRADC#,Java有時(shí)候也會(huì)出現(xiàn)把業(yè)MVCWebMVC卻是步履維艱。主又被倒了過(guò)來(lái),改成將語(yǔ)言書寫的程序嵌入在HTML內(nèi)容中。這兩種方式有一個(gè)相同MVCJ2EEJSPModel2問(wèn)世時(shí)才得JSPServletJavaBean技JSPModel1JSPModelSUNJSPModel1和Model2Model2在一定程MVC,但是它的應(yīng)用用并不盡如人意JSPModelJSPModelmodel2Controller,并且對(duì)頁(yè)面導(dǎo)航model2CraigR.McClanahan20005WEBframeworkJavaCommunity.Struts.20017月,Struts1.0ApacheJakarta的子項(xiàng)StrutsModel2MVC架構(gòu)。它只有一個(gè)中心控制器,XMLURLAction來(lái)處理邏輯Struts僅僅是一些標(biāo)記庫(kù)的組合。但Struts也包含了豐富的標(biāo)記庫(kù)和獨(dú)立于該框架工作的實(shí)用Struts有其自己的控制器(Controller(ViewEJB,JDBCObjectRelationBridge。在視圖層,Struts能夠與JSP,VelocityTemtes,XSL等等這些表示層組件想結(jié)合。StrutsWebAppJ2EEArchitecture,strutsjsp/servletwebcontainerStruts是Apache軟件基金會(huì)旗下Jakarta項(xiàng)目組的一部分,其敏捷迅速,在過(guò)去的一年中頗受關(guān)注。Struts把Servlet、JSP、自定義和信息資源(messageresources)整合到一個(gè)統(tǒng)一的框架中,開發(fā)人員利用其進(jìn)行開發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)MVC模式,極大的節(jié)省了時(shí)間,所以說(shuō)Struts是一個(gè)非常不錯(cuò)的應(yīng)用框架。strutsframeworkMVC(ArchitectureStrutsModel-View-Controllerwebbeanbean有兩種用法:Webbeanbeanbean中每個(gè)段的名稱必須相同。StudentView.jsp:Student.javaStrutsframeworkControllerActionServlet,但是對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMap、ActionForward這幾個(gè)組件協(xié)調(diào)完成(也許這幾個(gè)組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊。其中,Action而ActionMap和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。StudentAction.java:View基本上,strutsframework的運(yùn)行的類、組件都在這個(gè)包中,比如基本上,strutsframework的運(yùn)行的類、組件都在這個(gè)包中,比如StrtutswebapplicationConnectionPoolMessageSource。詳細(xì)信息請(qǐng)參考這不是一個(gè)包,而是是一個(gè)客戶類的集合。下面包括BeanTags,HTMLLogicTags,NestedTags,TemteTags這幾個(gè)用于構(gòu)建用戶界面的類的驗(yàn)證。詳細(xì)信息請(qǐng)參閱StrutsStrutsStrutsMVC模式緊密相關(guān):可分為以MVC模式緊密相關(guān):模型(Model)StrutsModelAction類(這個(gè)會(huì)在后面詳細(xì)討論),開發(fā)者通過(guò)其實(shí)現(xiàn)商業(yè)邏輯,同時(shí)用戶請(qǐng)求通過(guò)控制器(Controller)Action的轉(zhuǎn)發(fā)過(guò)struts-config.xml文件描述的配置信息的。一堆用來(lái)做XML文件解析的工具包,Struts是用XML來(lái)描述如何自動(dòng)產(chǎn)生一些JavaBean的屬性的,此外Struts還利用XML來(lái)描述在應(yīng)用中的用戶提示信息的(這息都一般在服務(wù)器啟動(dòng)時(shí)通過(guò)web.xml文件讀入的。我們可以在web.xml定義多個(gè)釋,很好懂的,在后面討論Action的時(shí)候,主要分析.apache.struts.action.ActionServletServlet的兩個(gè)參數(shù):debugleveldetail2,此外還設(shè)置了在啟動(dòng)載入時(shí)創(chuàng)建兩設(shè)置所有后綴為.action<servlet-map<servlet-name>OreillyActionServlet</servlet- 設(shè)置Struts的JSP頁(yè)面要用到的庫(kù)和她們的路Controller是這個(gè)框架中扮演“交通”的角色,當(dāng)客戶端與服務(wù)器有交互動(dòng)作時(shí),都由她來(lái)控制。ControllerHTTP請(qǐng)求封包并轉(zhuǎn)發(fā)到框架中相應(yīng)的對(duì)象,這些對(duì)象可能是JSPAction。Controllerweb.xmlorg.apache.struts.action.ActionServlet的一個(gè)實(shí)例,在本制動(dòng)作向?qū)?yīng)的配置信息,這個(gè)我們會(huì)在后面詳細(xì)討論,Controller通過(guò)這些配置信息來(lái)決HTTPAction在接收到轉(zhuǎn)發(fā)來(lái)的請(qǐng)求后,實(shí)現(xiàn)真正的商業(yè)邏Model就是在對(duì)用戶請(qǐng)求的整個(gè)控制過(guò)程中,真正處理用戶請(qǐng)求并保存處理結(jié)果JavaBean來(lái)把一些信息保存起來(lái)以便在各個(gè)對(duì)象之Action對(duì)象了。對(duì)用戶提交表單的數(shù)據(jù)進(jìn)行校驗(yàn),甚至對(duì)數(shù)據(jù)進(jìn)行預(yù)處View對(duì)象。struts-config.xmlstruts-config.xml配置文件是整個(gè)框架的主心骨。web.xml文件定義了struts-config.xml管理控制了??梢哉f(shuō)struts-config.xml就是整個(gè)Struts框架的“扛把子”(譯注3),只有這位“”清楚所有請(qǐng)如今的應(yīng)用系統(tǒng),XML形式的配置文件越來(lái)越多,如果整個(gè)系統(tǒng)只使用一個(gè)這樣的配置文件的話,那么保持整個(gè)系統(tǒng)的模塊化和可性都非常的輕松。使用配置文件來(lái)描述請(qǐng)求-struts-config.xml文件,文件中定義了一個(gè)與登錄請(qǐng)求對(duì)應(yīng)的登錄動(dòng)作,請(qǐng)求Action對(duì)象將請(qǐng)求轉(zhuǎn)發(fā)到<?xmlversion="1.0"encoding="UTF-8"<!DOCTYPEstruts-config"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.0//EN"Action<action-map<action>type-Actionname-ActionActionFormpath-Actionunknown–如果將該屬性設(shè)置為true,那么就是這個(gè)Action將處理整個(gè)應(yīng)用中所有未true了validate-如果本屬性為true則在Action動(dòng)作之前其對(duì)應(yīng)的ActionForm的validate方自<!--~~~~~~~~~~~~~~~~~~~~~--<!--O'ReillyMainActions--<!--~~~~~~~~~~~~~~~~~~~~~--<actionpath="/Login"<forwardname="success"path="/Dis<forwardname="failure"</action-mapViewJSP頁(yè)面。StrutsJSP的要求規(guī)通過(guò)定義方式的JSP頁(yè)面能夠?qū)⒂脩敉ㄟ^(guò)表單輸入的數(shù)據(jù)存入一個(gè)JavaBean中,也就ActionFormbeanAction類調(diào)用(自動(dòng)或手動(dòng))ActionForm的校驗(yàn)方Struts框架提供了若干個(gè)庫(kù)它們有各自不同的用途由于這些庫(kù)還可以脫離框架單獨(dú)使用,這樣我們也可以在其他系統(tǒng)中嘗試使用這些庫(kù),它們包括struts-html-這個(gè)庫(kù)用來(lái)創(chuàng)建動(dòng)態(tài)的HTML頁(yè)面和表單struts-bean-提供了類似甚至更強(qiáng)于<jsp:useBean>struts-logic-struts-temte-用于產(chǎn)生有共同風(fēng)格的動(dòng)態(tài)JSP頁(yè)面模板Struts 一個(gè)Struts架包把Struts.jarCopy到$ mon/lib或你使用Struts的Appaction下的WEB-INF/lib下,在你使用Struts的Appaction下web.xml中增加下列配置:<!--NestedTagLibraryDescriptor--<!--TemteTagLibraryDescriptor--ActionServlet也差不多,是為了加載一些庫(kù),方便重用顯示的組件。JDK5.0安裝程序地址 同意協(xié)議后,可以jdk-1_5_0_05-windows-i586-p.exetomcat5.5.9地址這里5.5.9exe。SysdeoEclipseTomcatLauncherplugin3.1beta版地址 /eclipse/tomcatplugin這里tomcatPluginV31beta.zipeclipse3.1安裝程序接,后將對(duì)應(yīng)的文件分別拷貝進(jìn)eclipse安裝下的對(duì)應(yīng)的文件夾即可。這里我們下eclipse-SDK-3.1-win32.zip。StrutsIDE1.1.7安裝程序地址:這里我StrutsIDE解壓縮tk.eclipse.plugin.struts_1.1.7.zip包,然后將plugins 拷貝至D:\eclipse 覆蓋原文件夾即可。好了,到此StrutsIDE插件安裝完成。JDK裝下的binpathJRE的librt.jarclasspathJDKC:\ProgramFiles\Java\jdk1.5.0_02JDK安裝配置的文章。tomcat只需要雙擊tomcat安裝包的exe文件,按照提示安裝即可,這里我們的安裝Eclipse只需要把eclipse-SDK-3.1-win32.zip安裝包解壓,然后把里面的eclipse文件夾剪切至想放置的 即可,這里我們把eclipse安裝到了D:\eclipse 下。在安裝 下雙擊eclipse.exe文件,即可啟動(dòng)eclipse。中間會(huì)詢問(wèn)默認(rèn)的工作 ,這里設(shè)置為E:\workspace 。請(qǐng)選中Usethisasthedefaultanddonotaskagain選項(xiàng),這樣以后啟動(dòng)就不會(huì)再詢問(wèn)了。到此eclipse安裝成功。tomcatPlugin安裝很簡(jiǎn)單,解壓我們已經(jīng)的安裝包tomcatPluginV31beta.zip,將解壓后的com.sysdeo.eclipse.tomcat_3.1.0.betaD:\eclipse\plugins下即可。我們關(guān)掉已經(jīng)打開的eclipse,重新打開,OK,現(xiàn)在我們會(huì)發(fā)現(xiàn)上多了幾個(gè)雄貓的圖標(biāo),就是tomcattomcatversion5.x版本,然后設(shè)定tomcathomeD:\Tomcat5.5,ContextsdirectoryD:\Tomcat5.5\conf\Catalina\localhost。到tomcatplugin設(shè)置完畢。SysdeoTomcatPlugintomcat工程File->new->others,打開新建向?qū)Э颍跇渲姓业絡(luò)ava->tomcatprojects,選中,點(diǎn)nextprojectsname中輸入textwebUsedefaultnext。在下一個(gè)testweb,創(chuàng)建完成。strutsFile->new->others,打開新建向?qū)Э颍业紸mas->Struts->AddStrutsSupport,Struts框架。在WEB-INF文件夾下可以找到,菜單中選擇openwith->AmasXMLEditer里有一個(gè)比較方便的struts-config.xml文件的編輯器,后面開發(fā)一個(gè)簡(jiǎn)單的小程序。File->new->others,打開新建向?qū)Э?,找到Amas->JSPFile,點(diǎn)擊next按鈕FileNameindex.jspFinishindex.jsp文件進(jìn)行編輯,內(nèi)容如下<%@pagecharset=gb2312"%><formname="form1"method="post"<tablewidth="300" cellspacing="0"<tr<tdcolspan="2">用戶登錄信息<inputname="username"type="text"id="username"<td>用戶<inputname="password"type="text"id="password"<tr<tdcolspan="2"><inputtype="submit"name="Submit"form打開File->new->package框,name中輸入com.is.form,點(diǎn)擊Finish按鈕。在右邊的Package Explorer樹中找到剛才創(chuàng)建的包c(diǎn)om.is.form包菜單中的new->others,找到Ama s->struts->StrutsActionForm,點(diǎn)擊next,在框中name欄輸入LoginForm,點(diǎn)擊Finish按鈕。LoginForm類的源程序如下:packagecom.is.form;importorg.apache.struts.action.ActionForm;publicclassLoginFormextends{privatestaticfinallongserialVersionUID=1L;privateStringusername="";privateStringpassword=*@returnReturnsthepublicString{return}*@parampasswordThepasswordtopublicvoidsetPassword(String{this.password=}*@returnReturnsthepublicString{return}*@paramusernameTheusernametopublicvoidsetUsername(String{this.username=}}jspform中的兩個(gè)輸入控件的名稱,為什么這eclipse的使用有很多的文檔。actionformcom.is.action包,同樣的過(guò)程,打開新建StrutsActionLoginAction.java類,均選默認(rèn)值。LoginAction的源程序如下packageimportjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapimportpublicclassLoginActionextends{privatestaticfinallongserialVersionUID=publicActionForwardexecute(ActionMapmap,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsException{//thislineishereforwhentheinputpageisupload-utf8.jsp,//itsetsthecorrectcharacterencodingfortheresponseStringencoding=if((encoding!=null)&&{}else}tryif(forminstanceof{LoginFormtheForm=(LoginForm)if(theForm.getUsername().equals("user")&&{returnnew }elsereturnnew }}}catch(Exception{}//thisshouldn'thappeninthisexamplereturnnull;}}ActionForwardstrutsstruts-blank.war中的做法進(jìn)行轉(zhuǎn)向,可以比較一下會(huì)有收獲的。同創(chuàng)建index.jsp頁(yè)面相同,我們創(chuàng) 下<%@pagepageEncoding="GBK"contentType="text/html;charset=GBK"<metahttp-equiv="Content-Type"Stringtyperequest.getParameter("type");}out.print("對(duì)不起,你輸入的用戶名或者錯(cuò)誤}Struts-config.xml添加formbean的配置,在和之間加入<form-beanname="loginForm"添加jsp文件的映射,在和之間加入<actionpath="/index"<action e" 添加action文件的映射,在和之間加入<path="/logincheck"type="com.is.action.LoginAction"name="loginForm"scope="request"struts-config.xml大致如下形式<action-map<actionpath="/index"<action e" <actionpath="/logincheck"type="com.is.action.LoginAction"name="loginForm"scope="request"validate="true"/></action-map<controllerprocessorClass=<message-resources<plug-in<set-propertyproperty="definitions-config"value="/WEB-INF/tiles-<plug-in運(yùn)試程testweb工程根 將工程部署進(jìn)tomcat,成功后會(huì)提示操作成功。tomcatIEindex.jsp你的第一個(gè)strutsStruts的一些基本知識(shí)。StrutsMVCModel2架構(gòu)。下面我們來(lái)運(yùn)行第一個(gè)Struts應(yīng)用程序(oWorld),來(lái)讓你快速。JakartaStruts
在應(yīng) (2)Struts的JAR文件到<CATALINA_HOME>/webapps/MyStruts/WEB-INF/lib目錄下,jar文件列表如下:<?xmlversion="1.0"encoding="ISO-8859-<!DOCTYPEweb-PUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication 創(chuàng)建一個(gè)strut-config.xml文件,到 下。struts-config.xml是Struts應(yīng)用的部署描述文件。它用來(lái)把MVC組件組合在一起。它通常被放置在<CATALINA_HOME>/webapps/webappname/WEB-INF/ 會(huì)頻繁的使用到它??盏膕truts-config.xml如下:<?xmlversion="1.0"encoding="ISO-8859-1"<!DOCTYPEstruts-config"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.1//EN"Strutsstruts組件。定義并創(chuàng)建實(shí)現(xiàn)某能的相關(guān)視圖,它們是應(yīng)用中的用戶接口。在struts-config.xmlstrutsActionForm就是我們要?jiǎng)?chuàng)建的視圖。struts-config.xmweb.xmlstruts上述步驟只是對(duì)Struts開發(fā)做了概要描述在接下來(lái)的章節(jié)會(huì)對(duì)這些步驟進(jìn)行比struts應(yīng)用的視圖時(shí)(MVCV層),我們會(huì)先創(chuàng)建一個(gè)包含Struts的JSP文件。個(gè)庫(kù)上,但這章我們?cè)谝晥D中主要關(guān)注于HTML庫(kù)。在開始我們的應(yīng)用時(shí),我們首先要需要描述視圖接口。在下面的應(yīng)用中有兩個(gè)視圖:query.jspresult.jsp。(1)queryquery視圖有query.jsp文件來(lái)表現(xiàn),是我們第一個(gè)看到的視圖。它用來(lái)查詢學(xué)生和提交Action中。query.jsp源文件如下:<%@pagelanguage="java"<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"<title>MyStrutsStruts<tableborder="0"cellspacing="0"<td>&<tr<tdheight="68"<div<imgsrc="images/hp_logo_MyStruts.gif"width="220"<td>&<html:formaction="search.do"name="searchForm"type="MyStruts.SearchForm"<tablewidth="45%"<td><html:textproperty="symbol"<tdcolspan="2"align="center"><html:submit如你看到的query視圖,除了form外,它就象一個(gè)包含數(shù)據(jù)集合的HTML頁(yè)面。在HTML頁(yè)面中我們把FORM改為用Struts<html:form/>來(lái)替換。ActionForm用來(lái)保存視圖中表單輸入?yún)?shù)的實(shí)際數(shù)值(MVC模式的C層)。如我們面章節(jié)提到的,當(dāng)一個(gè)<html:form/>被提交,Struts框架把對(duì)應(yīng)的數(shù)量必須遵守JavaBean名規(guī)則。舉例如下:privateStringpublicvoidsetSymbol(Stringsymbol);publicStringgetSymbol();symbol。在獲取或設(shè)置成員變量的數(shù)值時(shí)必須帶有前綴set和getset和get3-2是ActionFormpackageimportjavax.servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMap;publicclassSearchFormextendsActionForm{privateStringsymbol=null;publicStringgetSymbol(){return(symbol);}publicvoidsetSymbol(Stringsymbol){this.symbol=symbol;}publicvoidreset(ActionMapmap,HttpServletRequestrequest){this.symbol=}}ActionFormget,setActionFormbeanSearchForm的成員變量,以便下一個(gè)應(yīng)用使用。注意:reset()方法ActionMap類來(lái)被。關(guān)于ActionMap類我們暫時(shí)可以忽略,編譯SearchForm類,移到<CATALINA_HOME>/webapps/MyStruts/WEB-INF/classes/MyStruts<CATALINA_HOME>/webapps/MyStruts/WEB-INF/struts-config.xml文件中添加<form-beanname="searchForm"type="MyStruts.SearchForm"/>Struts應(yīng)用知道SearchForm如何被。resultstrutsJSP頁(yè)面。result.jsp<title>MyStrutsStruts<tablewidth="500"border="0"cellspacing="0"<td>&<tr<tdheight="68"<div<imgsrc="images/hp_logo_MyStruts.gif"width="220"<td>&<td>&<td>&:<%=request.getAttribute("name")%><td>&JSPHttpServletRequest獲取特定的學(xué)生的。這個(gè)數(shù)據(jù)通過(guò)Action對(duì)象中的HttpServletRequest實(shí)例來(lái)設(shè)置。Struts應(yīng)用中,控制器由兩個(gè)組件組成(MVC模式的M層)。這兩Strutsorg.apache.struts.action.ActionServlet實(shí)現(xiàn)(實(shí)例,但存在多個(gè)例如我們尋找指定的學(xué)生的。我們會(huì)創(chuàng)建一個(gè)從org.apache.struts.action.Action擴(kuò)展packageimportimportjavax.servlet.ServletException;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMap;publicclassSearchActionextendsAction{protectedStringgetName(Stringsymbol){if(symbol.equalsIgnoreCase("S0001")){return“SUN”;}return}publicActionForwardexecute(ActionMapmap,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{ name=//DefaulttargettoStringtarget=newString("success");if(form!=null){//UsetheSearchFormtogettherequestparametersSearchFormsearchForm=(SearchForm)form;Stringsymbol=searchForm.getSymbol();name=getName}//Setthetargettofailureif(name==null){target=new}elserequest.setAttribute("name",}//ForwardtotheappropriateViewreturn(map.findForward(target));}}我們注意到SearchAction類有兩個(gè)方法:getName()andexecute()。getName()方返“S0001ActionClassViewJSP文件可以通過(guò)它們?nèi)』厮鶎?duì)應(yīng)的對(duì)象(<%=")%>類中必須被實(shí)現(xiàn)。((struts-config.xmlweb.xml明Web應(yīng)用所使用的Struts庫(kù)本例中使用了三個(gè)庫(kù):StrutsBeanStrutsHTML和StrutsLogic庫(kù)。web.xml的源代碼。<?xmlversion="1.0"encoding="UTF-<!DOCTYPEweb-app PUBLIC"-//SunMicrosystems,Inc.//DTDWebApplication2.2//EN" <!--StandardActionServlet <!--StandardActionServletMap--<servlet-map</servlet-map<!--The eFileList-- e- <!--StrutsTagLibraryDescriptors--Struts正如前面提及的,StrutsStruts框struts-config.xml可以把這些組件組裝起來(lái),決定如何使用它們。下面這個(gè)實(shí)struts-config.xml文件的源代碼。<?xmlversion="1.0"encoding="ISO-8859-1"<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration
"ThisistheStrutsconfigurationfileforthe o!"sample<!--========FormBeanDefinitions===================================<form-beanname="SearchForm"type="MyStruts.SearchForm<!--==========ActionMapDefinitions==============================--<!-- o!-- = ="MyStruts.SearchAction" ="SearchForm" ="request" ="true" =><forwardname="success"path="/result.jsp"<forwardname="failure"path="/query.jsp"<!--==========MessageResourcesDefinitions===========================--<message-resourcesparameter="MyStrutsSearchFormSearchAction<form-beanname="searchForm"type="MyStruts.SearchFormAction = ="MyStruts.SearchAction" ="SearchForm" ="request" ="true" =><forwardname="success"path="/result.jsp"<forwardname="failure"path="/query.jsp"<action>元素的path屬性指定請(qǐng)求Action的路徑typeActionnameActionActionFormBean。scopeActionFormBean的存放范圍。validateinput<action>SearchActionMyStruts.SearchAction,請(qǐng)求路徑為"search",當(dāng)Action類被調(diào)用時(shí),Struts框架應(yīng)該把已經(jīng)包含表單數(shù)據(jù)的SearchFormBean傳給它。SearchFormBeanrequestAction類之query.jsp,struts-config.xml文件最后通過(guò)元素定義了一個(gè)ResourceBundle:<message-resources parameter屬性為"MyStruts.application",表明消息資源文件名為"perties",WEB-INF/classes/MyStruts/perties。MyStruts工程根 將工程部署進(jìn)tomcat,成功后會(huì)提示操作成功。點(diǎn)擊菜單欄中的雄貓圖標(biāo)啟動(dòng)tomcat,然后在IE地址欄中輸入MyStrutssearch.doquery.jsp的頁(yè)面內(nèi)容,錄入學(xué)號(hào),會(huì)顯示不同的結(jié)果。運(yùn)行正式開發(fā)前,需要在Tocmat(我的tomcat裝在c:\tomcat)中建立此項(xiàng)目。比較快的一種建立方式為在C:\tomcat\webapps下新建 test,再將C:\tomcat\webapps\struts-example下的WEB-INF 拷貝到test 下,然后將test\WEB-INF下的src和classes 以及struts-config.xml文件中內(nèi)容清空即可。這樣,我們需要的Struts類包及相關(guān)的配置文開發(fā)時(shí),將JSP文件放在test 下,Java原文件放在test\WEB-INF\src下,編譯后的類文件放在test\WEB-INF\classes下。<%@pagecontentType="text/html;charset=UTF-8"<%@tagliburi="/WEB-INF/Struts-bean.tld"<%@tagliburi="/WEB-INF/Struts-html.tld"<html:html<body<html:formaction="/regUserAction"<tableborder="0"<thalign="right"><td<html:textproperty="logname"size="20"<thalign="right"><td<html:passwordproperty="password"size="20"<thalign="right"><td<html:password "size="30"<td<html:submitproperty="submit"<tdStruts<form-beanname="regUserForm"type="org.c.Struts.example.RegUserForm<action-map<actionpath="/regUserAction"type="org.c.Struts.example.RegUserAction"attribute="regUserForm"scope="request"validate="false"><forwardname="failure"path="/<forwardname="success"path="/Struts的是Controller,即ActionServlet,而ActionServlet的就是Struts-config.xml,Struts-config.xmlWEB項(xiàng)目,通過(guò)此Struts-config.xmlStruts的關(guān)鍵所在。packageorg.c.Struts.example;importjavax.Servlet.http.HttpServletRequest;importorg.apache.Struts.action.ActionForm;importorg.apache.Struts.action.ActionMap;publicfinalclassRegUserFormextendsActionForm{privateStringlogname;privateStringpassword;privateString;publicRegUserForm(){logname=null;password=null;=null;}publicStringgetLogName(){returnthis.logname;}publicvoidsetLogName(Stringlogname){this.logname=logname;}publicvoidsetPassWord(Stringpassword)this.password=}publicStringgetPassWord(){returnthis.password;}publicvoidset ){ }publicStringget (){returnthis. }publicvoidreset(ActionMapmap,HttpServletRequest{logname=null;password=null;=}}FormBeanActionForm類,F(xiàn)ormBean是對(duì)頁(yè)面請(qǐng)求的封裝。即把HTTPrequest封裝在一個(gè)對(duì)象中,需要說(shuō)明的一點(diǎn)就是多個(gè)HTTPrequest可以共用一個(gè)FormBean,便于和重用。packageorg.c.Struts.example;importjavax.Servlet.http.*;importorg.apache.Struts.action.*;publicfinalclassRegUserActionextends{publicActionForwardperform(ActionMapmap,ActionFormform,HttpServletRequestreq,HttpServletResponseres){Stringtitle=Stringpassword=req.getParameter("password");String=req.getParameter("");取得用戶請(qǐng)求,}}FormBeanActionBeanActionBeanServlet實(shí)現(xiàn)Controller的功能,JavaBeanModelStrutsServletActionServlet、FormBean、ActionBean三ActionServletStruts-config.xml,專職完成頁(yè)面導(dǎo)航,而不再負(fù)責(zé)具體的數(shù)據(jù)獲取與相應(yīng)邏輯,這兩部分功能由FormBeanActionBean來(lái)完成。Struts優(yōu)缺點(diǎn)StrutsTomcat、TurbineApache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。JSPStruts是一個(gè)很好的起點(diǎn)。Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來(lái)越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有Struts。2Struts在章中,本文主要講解應(yīng)用框架,Struts原理、開發(fā)及項(xiàng)目實(shí)施,Struts的優(yōu)缺點(diǎn)。文章的包括了如下:MVC和Model2Struts原理、開發(fā)及項(xiàng)目實(shí)施Struts的優(yōu)缺點(diǎn)Struts經(jīng)1、Framework2、Struts3、StrutsmvcMVC式的出現(xiàn)不僅實(shí)現(xiàn)了功能模塊和顯示模塊的分離,同時(shí)它還提高了應(yīng)用系統(tǒng)的可Model11mode11JSPJSPJSPModel1感覺,使得程序的修改與變得異常;還有一個(gè)問(wèn)題就是程序邏輯開發(fā)與頁(yè)面設(shè)計(jì)糾GradyBoochUML人住宅、和的形象比喻來(lái)說(shuō)明人們處理不同規(guī)模的事物時(shí)應(yīng)該采用的合理方法一樣,人Model1Model22它引入了\"控制器\"servlet來(lái)?yè)?dān)任,客戶端的請(qǐng)求不再直接送了一個(gè)進(jìn)行前-后端處理的中樞。一方面為輸入數(shù)據(jù)的驗(yàn)證、認(rèn)證、日志及實(shí)現(xiàn)JSPModel,Control模式。實(shí)踐證明,MVC模式為大型程序的開發(fā)及提供了巨大的便利其實(shí),MVC開始并不是為Web應(yīng)用程序模式,傳統(tǒng)的MVC要求M將其狀態(tài)WebMVCMVC2MVC是一種模式,當(dāng)然可以有各種不同的具體實(shí)現(xiàn),包括您自己就可以實(shí)現(xiàn)一現(xiàn)MVC思想的程序框架,StrutsMVC2的程序框架。它的大致結(jié)構(gòu)如圖三所示(view控制層(controller)、和模型層(Model)。其表示層使用Struts庫(kù)構(gòu)建。來(lái)自客戶的所有需ActionServletservlet接收(ActionServletStruts已經(jīng)為我們寫數(shù)和Struts配置(struts-config.xml)中ActionMap,將請(qǐng)求送給合適的Action去處理,解StrutsActionStruts應(yīng)用中真正干活的組件,一所需的描繪響應(yīng)的JSP(或Action)的ActionForward對(duì)象給ActionServlet以將響應(yīng)呈現(xiàn)給客戶。過(guò)程如圖四所示:Action分離出來(lái)后有利于它的重用,Action類完成,但具體一個(gè)(orderBo)Model來(lái)完成。orderBo可能用一個(gè)返回整型值的名submitOrder的方法來(lái)做這件事,Action則是先校驗(yàn)定單數(shù)據(jù)是否正確,以免常說(shuō)的進(jìn)出;如果正確則簡(jiǎn)單地調(diào)用orderBo的submitOrder方法來(lái)得到定單號(hào);它還要處理StrutsStruts的、Struts最早是作為ApacheJakarta項(xiàng)目的組成部分問(wèn)世運(yùn)做。項(xiàng)目的創(chuàng)立者希望通過(guò)對(duì)該項(xiàng)目的研究,改進(jìn)和提高JavaServerPages(JSPs)、Servlet庫(kù)以及面向?qū)ο蟮募夹g(shù)水準(zhǔn)。當(dāng)前最高版本為Struts1.0.2,可以到 、Struts這個(gè)名字來(lái)源于在建筑和舊式飛機(jī)中使用的支持金屬架。它的目的是為了幫助你減少M(fèi)VCWeb應(yīng)用的時(shí)間。你仍然需要學(xué)習(xí)和應(yīng)用該架構(gòu),不過(guò)它將ServletsJSP的優(yōu)點(diǎn)來(lái)建立可擴(kuò)展的應(yīng)用,Struts是一個(gè)不錯(cuò)的選擇。StrutsMVCModel-View-Controller的縮寫,是一種常用的設(shè)計(jì)模式。MVC減弱了業(yè)務(wù)邏MVC的工作原理,如下圖1所示:StrutsMVC的一種實(shí)現(xiàn),它將Servlet和JSP標(biāo)記(屬于J2EE規(guī)范)用作實(shí)現(xiàn)的一部分。StrutsMVCJ2EEStruts是一組相互協(xié)作的類、servletJSPMVC2設(shè)StrutsStruts也包含了豐富的標(biāo)記庫(kù)和獨(dú)立于該框架工作的實(shí)用程序類。圖5顯示了Struts的一個(gè)概覽。5.StrutsStruts(1)browser(客戶瀏覽器來(lái)自客戶瀏覽器的每個(gè)HTTP請(qǐng)求創(chuàng)建一個(gè)。Web容器將用一個(gè)HTTP響應(yīng)作出響控制器接收來(lái)自瀏覽器的請(qǐng)求,并決定將這個(gè)請(qǐng)求發(fā)往何處。就Strutsservlet實(shí)現(xiàn)的一個(gè)命令設(shè)計(jì)模式。struts-config.xml文件配置控制器。業(yè)務(wù)邏輯更新模型的狀態(tài),并幫助控制應(yīng)用程序的流程。就Struts際業(yè)務(wù)邏輯“瘦”Action模型表示應(yīng)用程序的狀態(tài)。業(yè)務(wù)對(duì)象更新應(yīng)用程序的狀態(tài)。ActionFormbean在會(huì)話級(jí)或請(qǐng)求級(jí)表示模型的狀態(tài),而不是在持久級(jí)。JSP文件使用JSP標(biāo)記來(lái)自ActionFormbeanJSP--只有標(biāo)記。標(biāo)記是使Struts有別于其他框架(如Velocity)的因一。6org.apache.struts.actionUML6ActionServlet(Controller)、ActionForm(FormState)和Action(ModelWrapper)之間的最簡(jiǎn)關(guān)系。6.Command(ActionServlet)Model(Action&ActionForm)UMLActionServlet經(jīng)是用C語(yǔ)言進(jìn)行結(jié)構(gòu)化編程的很好方法?,F(xiàn)在好多了,我們有了Java技術(shù)、XML、J2EE,等等。Struts的控制器是將(通HTTPpost)servlet--控制器使用配置文件以使您不必ActionServlet是該MVC實(shí)現(xiàn)的Command部分,它是這一框架的。ActionServlet(Command)ActionActionFormActionForwardstruts-config.xmlCommandWebActionActionForm來(lái)解決特定的問(wèn)題。文件struts-config.xmlActionServlet如何使用這些擴(kuò)展的類。這種方法有幾應(yīng)用程序的整個(gè)邏輯流程都在一個(gè)分層的文本文件中。這使得人們更容易查看和理解JavaJava開發(fā)人員也不必在更改流程以后重新編譯代碼。ActionServletCommand功能。ActionForm類ActionFormWeb應(yīng)用程序的會(huì)話狀態(tài)。ActionForm是一個(gè)抽象類,必須為每個(gè)輸,ActionFormHTML表單設(shè)置或更新的一般意義上的數(shù)據(jù)。例如,您可能有一個(gè)由HTML表單設(shè)置的UserActionForm。Struts框架將執(zhí)行以下操作:UserActionFormStrutsHttpServletRequestUserActionForm的狀態(tài)。沒(méi)有太多討厭request.getParameter()調(diào)用。例如,Struts框架將從請(qǐng)求流中提取fname,并調(diào)用StrutsUserActionFormUserActionAction類之前,StrutsUserActionFormvalidation()方法進(jìn)行表地方,驗(yàn)證可能有所不同。在UserAction類中進(jìn)行狀態(tài)驗(yàn)證可能更好。可在會(huì)話級(jí)UserActionForm。struts-config.xmlHTMLActionForm之間的映射關(guān)系。可將多個(gè)請(qǐng)求映射到UserActionForm。UserActionFormActionAction類是業(yè)務(wù)邏輯的一個(gè)包裝。Action類的用途是將HttpServletRequest轉(zhuǎn)換為業(yè)務(wù)邏輯。要使用Action,請(qǐng)創(chuàng)建它的子類并覆蓋process()方法。ActionServlet(Command)perform()ActionForm。仍然沒(méi)有太多討厭的request.getParameter()調(diào)用當(dāng)進(jìn)展到這一步時(shí)輸入表單數(shù)(或HTML表單數(shù)據(jù))已被從請(qǐng)求流中提取出來(lái)并轉(zhuǎn)移到ActionForm類中。Action類時(shí)請(qǐng)注意簡(jiǎn)潔。Action類應(yīng)該控制應(yīng)用程序的流程,而不應(yīng)該控制應(yīng)用EJB中,我們就可以提供更大的靈活性和可考慮Action類的另式是Adapter設(shè)計(jì)模式。Action的用途是“將類的接口轉(zhuǎn)換為客戶機(jī)所需的另一個(gè)接口。AdapterAdapter,則這些類會(huì)因?yàn)椴患嫒莸慕涌诙鵁o(wú)法協(xié)同工作?!保℅ofDesignPatterns-ElementsofReusableSoftwareStruts業(yè)務(wù)接口保持兼容(Action是類而不是接口。Action)ErrorUML圖(圖6)還包括ActionError和ActionErrors。ActionError封裝了單個(gè)錯(cuò)誤消息。ActionErrors是ActionError類的容器,View可以使用標(biāo)記這些類。ActionError是Struts保持錯(cuò)誤列表的方式。7.Command(ActionServlet)Model(Action)UMLActionMap輸入事件通常是在HTTP請(qǐng)求表單中發(fā)生的,servlet容器將HTTP請(qǐng)求轉(zhuǎn)換為HttpServletRequest??刂破鞑榭摧斎氩⒄?qǐng)求分派給某個(gè)Action類。struts-config.xml確定Controller調(diào)用哪個(gè)Action類。struts-config.xml配置信息被轉(zhuǎn)換為一組ActionMap,而后者又被放入ActionMaps容器中(您可能尚未注意到這一點(diǎn),以s結(jié)尾的類就是容器)ActionMap包含有關(guān)特定如何映射到特定Action的信息ActionServlet(Command)通過(guò)perform()方法將ActionMap傳遞給Action類。這樣就使Action可用于控ActionMapActionMaps是ActionMap對(duì)象的一個(gè)集合:Struts的是ActionSevlet,ActionSevlet的是Struts-config.xml。這在后面還會(huì)STRUSTSTRUTSStruts經(jīng)Strutscontroller1.Http2.把這個(gè)請(qǐng)求映射到一個(gè)定義好的業(yè)3.4.StrutsControllerActionServlet中,ActionServlet調(diào)到用戶請(qǐng)求對(duì)應(yīng)的Action,調(diào)用相應(yīng)的Action來(lái)具體執(zhí)行用戶的請(qǐng)求,最后返回StrutsController中最主要的部分,所有用戶請(qǐng)求都會(huì)被發(fā)送到這里,所有的其它處理也必須從這里經(jīng)過(guò)。ActionServletHttpServletActionServlet接收到voidprocess(HttpServletRequestrequest,HttpServletResponseresponse)throws getApplicationConfig(request).getProcessor().processrequest,response);}一般情況下,我們不ActionServlet類,僅僅使用就可以了。某些情況下,我們可以自己擴(kuò)ActionServletActionServletMyActionServlet類。覆蓋其中的一些方法來(lái)達(dá)到你的特殊處理的需要。ActionServlet繼承自javax.servlet.http.HttpServlet,所以servletservlet來(lái)看待,只是RequestProssorrequest,requesthandlerrequestRequestProcessor類中的process(execute)processLocaleprocessLocale()方法。然后只需要在配置文件中加入段就可以了Action類是實(shí)現(xiàn)整系的部分它在客戶請(qǐng)求界面表示和業(yè)務(wù)邏輯之間起到一個(gè)橋梁的作用每一個(gè)ActionLogonAction、查找SearchAction等等。ActionRequestProcessorprocessActionPerform方法調(diào)用ActionModel層的JavaBean來(lái)實(shí)現(xiàn)你的業(yè)務(wù)邏輯操作。在某些情況下,可能包含少許表現(xiàn)邏輯。這樣,就IStorefrontService接口,這個(gè)接口在實(shí)現(xiàn)時(shí)完全會(huì)變得非常難于理解難于代碼也不能重用。struts-example工程的設(shè)計(jì)就是一個(gè)bug,Action===================Actionexecute方法中,ActionForward類。ActionForwardforward部分的信息包裝起來(lái),減少了應(yīng)用程序和物理資源信息之間的耦合性。通過(guò)ActionMap類,可以在配置文件中查forwardLoginAction,它的配置信息可能是這樣的:返回的ActionForward就會(huì)包含段中的信息。在ActionMap類的findForward方法中,首先會(huì)forwardnameforward段,如果沒(méi)有,則在配置文件中的段中=====================以前,頁(yè)面上的輸HTTPrequest提交,服務(wù)方檢索出輸入的數(shù)據(jù),進(jìn)行驗(yàn)證,然后將這些數(shù)據(jù)傳變得復(fù)雜。ActionForm[org.apache.struts.action.ActionForm]用來(lái)收集用戶的輸入,并且把這ActionAction對(duì)象中,ActionForm中的數(shù)據(jù)被取出來(lái)傳遞給業(yè)務(wù)邏輯層進(jìn)行處理。ActionForm一方面作為一個(gè)緩沖區(qū),臨時(shí)用戶輸入的數(shù)據(jù);另一方面,可以把ActionForm當(dāng)成是HTTP和Action之間的一個(gè),它可以驗(yàn)證輸入數(shù)requestActionActionForm可以有兩種Scoperequest或者sessionrequest就是只能在rquest到responseActionForm就不可見了;session可以保存時(shí)間長(zhǎng)一點(diǎn)。==================在ActionForm的ValidateActionErrors對(duì)象。這個(gè)對(duì)象可以將錯(cuò)誤信息都封裝起來(lái),并且自JSPActionErrors中的錯(cuò)誤信息顯示出來(lái)。包括,每一個(gè)具體的,通過(guò)add添加的錯(cuò)誤信息,和一個(gè)ErrorHeader和一個(gè)ErrorFooterHTML語(yǔ)法。包含在bean和bean屬性時(shí)使用的tag,也包含一些消息顯示的tag。html:struts-htmltag信息。temte:struts-temtetaglib包含的tag用來(lái)定義模板機(jī)制。2.6strtus一個(gè)用戶系統(tǒng),用戶通過(guò)網(wǎng)頁(yè)輸入相關(guān)信息:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 備考2024預(yù)算員證考試試題及答案
- 第13課 網(wǎng)絡(luò)安全防范 教學(xué)設(shè)計(jì) 2024-2025學(xué)年浙教版(2023)初中信息技術(shù)八年級(jí)上冊(cè)
- 2025年黑龍江建筑安全員B證考試題庫(kù)
- 投資咨詢前沿技術(shù)試題及答案
- 2024年陪診師臨床知識(shí)試題及答案
- 提高磁性元件抗干擾能力要求
- 幼兒園育嬰師角色定位試題及答案
- 培養(yǎng)人力資源師人脈試題及答案
- 產(chǎn)品設(shè)計(jì)與市場(chǎng)定位精準(zhǔn)指導(dǎo)
- 名著人物分析試題及答案
- 電力工程線路交叉跨越施工主要工序及特殊工序施工方法
- 反恐防暴應(yīng)急知識(shí)培訓(xùn)
- 2024-2030年版越南投資環(huán)境行業(yè)投資分析及未來(lái)發(fā)展規(guī)劃研究報(bào)告
- 羅漢果行業(yè)深度研究與市場(chǎng)前景分析報(bào)告
- 2024年安防監(jiān)控系統(tǒng)技術(shù)標(biāo)準(zhǔn)與規(guī)范
- 春節(jié)序曲 課件
- 七年級(jí)下學(xué)期生物蘇教版電子教材
- 8.2-立體圖形的直觀圖公開課教案教學(xué)設(shè)計(jì)課件案例試卷
- 《管理學(xué)-原理與方法》歷年考試真題試題庫(kù)(含答案)
- 2024年全國(guó)職業(yè)院校技能大賽(植物病蟲害防治賽項(xiàng))考試題庫(kù)-上(單選題)
- 歐洲門窗標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論