




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
外文原文DEVELOPINGAPPLICATIONSWITHTILESLEVERAGINGLAYOUTSUSABILITYISAPRIMECONCERNINTHEDESIGNOFTODAYSAPPLICATIONSANDCONSISTENCYISAPRIMEINGREDIENTOFUSABILITYUSERSWANTTOSTAYFOCUSEDONTHETASKATHANDANDAREEASILYANNOYEDBYANYSMALLINCONSISTENCYINANAPPLICATIONSINTERFACEORSCREENLAYOUTCONSISTENCYISNOSMALLCHALLENGEFORADYNAMICWEBAPPLICATIONITISCOMMONPLACEFOREACHPAGETOBECODEDBYHANDLAYOUTTOOLSFORSTATICPAGESAREAVAILABLETOMOSTDESIGNERSTODAY,BUTFEWOFTHESEAREAVAILABLETOAPPLICATIONSBASEDONJAVASERVERPAGESWORSE,THELOOKANDFEELOFANAPPLICATIONISUSUALLYTHELASTDETAILTOBEFINALIZED,ANDTHENITWILLOFTENCHANGEBETWEENVERSIONSOREVENARBITRARILYASPARTOFAGREATERWEBSITE“RELAUNCH”THISCANCREATEANIGHTMARISHROUNDOFLASTMINUTECODINGANDTESTINGEVENIFONLYTOALTERTHEBACKGROUNDCOLORORADDANEWLINKTOTHEMENUBAROFCOURSE,CONSISTENCYISMORETHANAHOBGOBLINITSAHALLMARKOFGOODDESIGNLIKEANYOTHERCOMPONENT,WEBPAGESCONTAINMANYCOMMONELEMENTS,HEADERS,FOOTERS,MENUS,ANDSOFORTHOFTEN,THESEARECUTANDPASTEDFROMONEPAGETOTHENEXTBUTLIKEANYCOMPONENT,BUGSAREFOUNDANDFEATURESAREENHANCED,LEADINGTOANOTHERROUNDOFCUTANDPASTE“REUSE”INAWEBAPPLICATION,PAGEMARKUPISAPROGRAMMINGCOMPONENTLIKEANYOTHERANDSHOULDBEHELDTOTHESAMESTANDARDOFREUSELAYERINGWITHDYNAMICTEMPLATESINTHEFIRSTPARTOFTHISBOOK,WESTRESSEDTHEIMPORTANCEOFLAYERINGANAPPLICATIONTOISOLATETHEEFFECTSOFCHANGEBYCOMPARTMENTALIZINGANAPPLICATION,WECANCHANGEONEPIECEWITHOUTDISRUPTINGTHEOTHERPIECESTHESAMECONCEPTCANBEAPPLIEDWITHINTHEPRESENTATIONLAYERTOSEPARATETHELOOKANDFEELFROMTHEACTUALCONTENTONEAPPROACHTOSEPARATINGLAYOUTFROMCONTENTISTHEUSEOFDYNAMICJSPINCLUDESTHEJSPSPECIFICATIONPROVIDESFORBOTHSTATICANDDYNAMICINCLUDESTHESTANDARDJSPACTIONFORADYNAMICINCLUDEISWEMAKEUSEOFDYNAMICINCLUDESBYBREAKINGTHESERVERPAGEINTOSEVERALFRAGMENTS,EACHWITHITSOWNJOBTODOABACKGROUNDTEMPLATECANSETTHEDEFAULTFORMATANDLAYOUT,ANDPAGEFRAGMENTSCANBEINCLUDEDATRUNTIMETOPROVIDETHECONTENTADYNAMICINCLUDEFOLDSTHEOUTPUTOFTHEINCLUDEDPAGEINTOTHEORIGINALPAGEITACTSLIKEASWITCHTHATMOVESPROCESSINGOVERTOAPAGEFRAGMENTANDTHENBACKTOTHECALLERASSHOWNINFIGURE,THEINCLUDEDTEMPLATEISPROCESSEDNORMALLY,JUSTASIFITHADBEENCALLEDONITSOWNTHETILESFRAMEWORK,WHICHWEEXPLOREINTHISCHAPTER,USESAMOREADVANCEDFORMOFTHEJSPINCLUDEACTIONINATILESAPPLICATION,THEBACKGROUND,ORLAYOUT,TEMPLATEUSUALLYDEFINESTHEPOSITIONOFAHEADER,MENUBODY,CONTENT,ANDFOOTEROTHERPAGESARETHENINCLUDEDTOFILLEACHOFTHESEPOSITIONSIFTHEHEADERCHANGES,THENONLYTHATTEMPLATEFILENEEDBECHANGEDTHECHANGEISAUTOMATICALLYREFLECTEDINALLPAGESTHATINCLUDETHATTEMPLATETHEEFFECTSOFCHANGESAREMINIMIZEDANDTHEHOBGOBLINSAPPEASEDSTANDARDHTMLCOMPONENTS,LIKECASCADINGSTYLESHEETSCSSS,ALSOWORKWELLWITHDYNAMICTEMPLATESASTYLESHEETCANHELPKEEPTHETEMPLATESINTERNALLYCONSISTENTANDFURTHERMINIMIZESTHEEFFECTSOFCHANGETEMPLATECONSEQUENCESEVERYTECHNOLOGYCOMESBUNDLEDWITHCOMPROMISESHEREARESOMECONSEQUENCESPRO,CON,ANDMIXEDTHATCOMEWITHUSINGDYNAMICTEMPLATESINYOURAPPLICATION_THEJSPINCLUDETECHNOLOGYISWELLESTABLISHEDANDRELIABLE,ANDTENDSTOSCALEWELLINLARGERAPPLICATIONSTHEUNDERLYINGTECHNOLOGYFORINCLUDINGDYNAMICTEMPLATESISPARTOFTHECOREJAVASERVLETAPI_MOSTCONTAINERSAREOPTIMIZEDFORJSPSANDSTANDARDFEATURESLIKESERVLETINCLUDE_THEINCLUDEDPAGESTYPICALLYOUTPUTHTMLFRAGMENTSANDARENOTSYNOPTICALLYCOMPLETETHISCANPREVENTYOUFROMMAINTAININGTEMPLATESWITHSTANDARDHTMLEDITORS,WHICHEXPECTMARKUPTOBEPARTOFACOMPLETE,STANDALONEPAGE_MOSTSITESRECOMPILEJSPPAGESWHENTHESOURCECHANGESTEMPLATESCREATEMOREPAGESTOBEMONITOREDFORSUCHCHANGES_TEMPLATESACTUALLYREUSECODETHATWOULDOTHERWISEBEDUPLICATEDFROMPAGETOPAGETHISCANRESULTINASIGNIFICANTLYSMALLERFOOTPRINTANDCONSERVESERVERRESOURCESUSINGTEMPLATESWETAKEACLOSELOOKATUSINGDYNAMICTEMPLATESINTHISCHAPTER,ESPECIALLYASTHETILESFRAMEWORKIMPLEMENTSTHEMTILESISAMATUREPRODUCTANDINTEGRATESWELLWITHTHESTRUTSFRAMEWORKTILESTEMPLATESCANEVENBEDEPLOYEDFROMASTRUTSACTIONFORWARD,ELIMINATINGAGOODMANY“REDTAPE”FILESOTHERTEMPLATESYSTEMSREQUIRESTRUTSANDTILESAREAPOWERFULCOMBINATIONUSINGDYNAMICTEMPLATESTOGENERATEPRESENTATIONPAGESJIBESWELLWITHTHEOTHERPROGRAMMINGPRACTICESINVOLVEDINWRITINGAWEBAPPLICATIONINTHISCHAPTER,WESHOWHOWTOBESTCOMBINETILESWITHSTRUTSANDOTHERASSETS,LIKECSSAFTERINTRODUCINGTILES,WEPROVIDEAREFACTORINGGUIDETOHELPYOUMIGRATEANEXISTINGPRODUCTTOTILESIFYOUFINDTHATTILESISAGOODMATCHFORYOURAPPLICATION,BESURETOSTUDYTHEEXAMPLEAPPLICATIONINNEXTCHAPTERSEETABLEFORAGLOSSARYOFSOMEOFTHESPECIALTERMSWEUSEINTHISCHAPTERCOMBININGTEMPLATES,TILES,ANDSTRUTSWHENHTMLTABLESWEREFIRSTINVENTED,PAGEDESIGNERSIMMEDIATELYADOPTEDTHEMASALAYOUTMECHANISMABORDERLESSTABLECANBEUSEDTOCONTAINOTHERTABLESANDCONTENTANDCREATELAYOUTSTHATWEREOTHERWISEIMPOSSIBLETHESAMEIDEAISOFTENUSEDWITHDYNAMICTEMPLATESASSHOWNINFIGURE,AMASTERTEMPLATEISUSEDTOPROVIDETHELAYOUTFORTHEPAGEANDPOSITIONTHEELEMENTSPAGEFRAGMENTSARETHENINCLUDEDTOFILLINTHEELEMENTSTHEPAGEFRAGMENTSCANBEINCLUDEDINANYTYPEOFLAYOUTTHOSETHATUSEBORDERLESSTABLES,THOSETHATUSETAGS,ANDEVENVERYSIMPLELAYOUTSTHATJUSTSTACKONECOMPONENTOVERTHEOTHERTILESISAFRAMEWORKTHATMAKESUSINGTEMPLATELAYOUTSMUCHEASIERTHROUGHUSEOFASIMPLEBUTEFFECTIVETAGLIBRARYITCANBEUSEDASADROPINREPLACEMENTFORTHETEMPLATETAGLIBDISTRIBUTEDWITHSTRUTS10BUTPROVIDESMOREFUNCTIONALITYTHETILESPACKAGECANBEUSEDWITHANYJSPAPPLICATIONMOSTOFTEN,AJSPTEMPLATESYSTEMWILLUSEONETEMPLATEFORTHELAYOUTANDANOTHERFORTHEFILLINCOMPONENTSTILESCALLSTHESELAYOUTFILESDEFINITIONSMOSTTEMPLATESYSTEMSREQUIRETHATANEXTRAFILEBEUSEDJUSTTOSPECIFYTHELAYOUTTOAVOIDTHISOVERHEAD,TILESALLOWSTHELAYOUTDEFINITIONSTOBESTOREDASAJAVABEANWHATSMORE,THEREISANEXTENSIONTOSTRUTSTHATALLOWSDEFINITIONSTOBETHETARGETOFANACTIONFORWARDTHISISANEXCITINGFEATURE,WHICHWEDISCUSSINSECTION1133INSECTION115,WERETURNTODEFINITIONSAGAINWHENWEWALKTHROUGHREFACTORINGANEXISTINGPRODUCTINTOATILESBASEDAPPLICATIONUSINGDEFINITIONSANDSTRUTSBUT,FORNOW,LETSSTARTATTHEBEGINNINGANDCREATEANEWLAYOUTFROMSCRATCHBUILDINGALAYOUTTEMPLATETHEFIRSTSTEPINBUILDINGANYLAYOUTISTOIDENTIFYTHECOMPONENTPARTSFORACLASSICWEBPAGE,THEPARTSWOULDBEAHEADER,MENU,BODY,ANDFOOTEROFTENASIMPLESKETCHCANHELPTOBRINGTHELAYOUTINTOFOCUSTOPROVIDEAQUICKEXAMPLE,WEWILLBUILDALAYOUTFORACLASSICWEBPAGEWITHAHEADER,AMENU,ABODY,ANDFOOTEROURLAYOUTSKETCHISPROVIDEDINFIGURE1OPENANEWJSPPAGE2IMPORTTHETILESTAGLIB3CREATEANHTMLTABLEWITHCELLSTHATMATCHTHESKETCH4USEATILESJSPTAGTONAMEEACHPARTOFTHELAYOUTASYOUCANSEEINLISTING,WHEREVERWECREATEACELLTOINCLUDEONEOFOURLAYOUTCOMPONENTS,WEPLACEAJSPTAGLIKETHISTAGSAYSTOINSERTTHETILEORTEMPLATEFILEIDENTIFIEDBYTHEVALUEOFTHESPECIFIEDATTRIBUTEWHENITISTIMETOUSETHISLAYOUTINANAPPLICATION,WEPASSTOITTHEPATHSTOUSEFOREACHOFTHESETILESTHISALLOWSUSTOUSETHESAMELAYOUTOVERANDOVERAGAIN,SIMPLYBYPASSINGADIFFERENTPATHFORONEORMOREOFTHETILESINMOSTCASES,THEBODYTILEWILLCHANGEFOREACHPAGE,BUTALLPAGESINTHESAMEAREACOULDSHARETHESAMEHEADERANDMENUTILESMEANWHILE,ALLPAGESONTHESAMESITEMIGHTSHAREASINGLEFOOTERTILEWHENANEWYEARROLLSAROUNDANDITISTIMETOUPDATETHECOPYRIGHTNOTICETODISPLAYTHENEWCURRENTYEARONEVERYPAGE,ONLYTHEONEFOOTERTILENEEDBEEDITEDOURCLASSICLAYOUTCANBEMADEINTOACOMPLETE,STANDALONETEMPLATEPAGEJUSTBYADDINGTHERESTOFTHEHTMLMARKUPINLISTING,YOULLNOTETHATWESLIPPEDINANEWTILESTAG,THISTAGSAYSTORETURNANATTRIBUTEVALUEASALITERALSTRINGRATHERTHANASAPATHNAMEOROTHERCOMMANDTODOTHIS,TILESCALLSTHEOBJECTSSTANDARDTOSTRINGMETHODTHERESULTISINSERTEDDIRECTLYINTOTHEPAGEATRUNTIMEBUTWHATISATILETHETEMPLATEFEATURESOFFEREDBYTHETILESFRAMEWORKFARSURPASSWHATTHESTANDARDSERVLETANDJSPINCLUDESOFFERTHEFRAMEWORKREFERSTOITSTEMPLATESASTILESTHISISTOHELPINDICATETHATTILESAREMOREPOWERFULTHANSIMPLEJSPTEMPLATESTILESAREBUILDINGBLOCKSFORYOURPRESENTATIONLAYERTECHNICALLY,ATILEISARECTANGULARAREAINAJSP,SOMETIMESREFERREDTOASAREGIONATILEMAYBEASSEMBLEDFROMOTHERTILESTILESCANBEBUILTRECURSIVELYANDREPRESENTEDASATREE,ASSHOWNINFIGUREEACHNODEONTHETREEISAREGIONTHEROOTNODEISUSUALLYTHEPAGEFINALNODES,ORLEAVES,CONTAINTHEPAGECONTENTINTERMEDIATENODESAREUSUALLYLAYOUTSTHELAYOUTNODESAREUTILITYTILESTHATEITHERPOSITIONATILEWITHINTHEPAGEORPROVIDEBACKGROUNDMARKUPFORTHECONTENTTILESTHETILEOBJECTSSUPPORTSEVERALIMPORTANTFEATURES,INCLUDINGPARAMETERSANDDEFINITIONSATILECANACCEPTVARIABLEINFORMATIONATRUNTIMEINTHEFORMOFPARAMETERSORATTRIBUTESTHISMEANSTHATTILESAREPARAMETERIZABLETHEYCANACCEPTVARIABLEINFORMATIONANDACTUPONTHEMSELVESACCORDINGLYTHETILESPARAMETERSAREUSUALLYCALLEDATTRIBUTESTOAVOIDCONFUSIONWITHREQUESTPARAMETERSTILEATTRIBUTESAREDEFINEDWHENINSERTINGTHETILEANDAREVISIBLEWITHINTHETILEONLYTHEYARENTVISIBLEINSUBTILESORTOAPAGEENCLOSINGTHETILETHISAVOIDSNAMECONFLICTSWHENTHESAMETILEISUSEDSEVERALTIMESINTHESAMEPAGEDEVELOPERSCANSTAYFOCUSEDONMAKINGTHEBESTUSEOFTILESWITHOUTWORRYINGABOUTNAMECONTENTIONTILEATTRIBUTESCANBESTRINGSANDOTHERTYPESSEESECTIONFORMOREABOUTTILEATTRIBUTESDEFINITIONSTAKENTOGETHER,THEVARIOUSATTRIBUTESPASSEDTOATILECREATEADESCRIPTIONOFTHESCREENINPRACTICE,MANYOFTHESEDESCRIPTIONSARERELATEDANDTENDTOBUILDONONEANOTHERDEFINITIONSSTOREASETOFATTRIBUTESSOTHATASCREENDESCRIPTIONBECOMESADISCRETEOBJECTWITHITSOWNIDENTITYDECLAREABASESCREENDEFINITIONANDTHENCREATEOTHERDEFINITIONSDERIVEDFROMTHATBASEIFTHEPARTICULARSOFABASESCREENCHANGE,THENALLTHEDEFINITIONSEXTENDEDFROMTHATBASEAREALSOCHANGEDTHISBRINGSTHEOBJECTORIENTEDPRINCIPLESOFINHERITANCEANDENCAPSULATIONTOYOURDYNAMICPAGESWECOVERTHETILESDEFINITIONINSECTIONDEFINITIONSAREOPTIONALYOUCANALSODEPLOYATILEATANYTIMEUSINGASIMPLEJSPTAGDEPLOYINGATILESTEMPLATETHELAYOUTTEMPLATEWEBUILTINDEFINEDWHERETOPOSITIONITSTILESBUTNOTWHATTILESTOUSETHOSEDETAILSANDANYOTHERPARTICULARSAREPASSEDTOTHELAYOUTWHENITISDEPLOYEDTHESIMPLESTWAYTODOTHISISTOCALLTHELAYOUTFROMANOTHERJSPLISTINGSHOWSAJAVASERVERPAGEBEINGUSEDTOPASSTOALAYOUTWHATTILESITSHOULDUSEWHENHELLOJSPISRENDERED,ITWILLRETURNMYLAYOUTJSPWITHTHECONTENTOFTHESPECIFIEDTILESTHISNEWPAGEWOULDLOOKMUCHLIKETHEORIGINALHELLOJSP,EXCEPTWITHADIFFERENTTITLEHELLOAGAINANDADIFFERENTBODYTILETHECONTENTSOFPAGETWOJSPYOUCANCONTINUETOREUSEALAYOUTTHISWAY,SUBSTITUTINGDIFFERENTATTRIBUTEVALUESASNEEDEDTHISPASSINGOFPARAMETERSMAKESITPOSSIBLETOUSEASINGLEBASETEMPLATETOLAYOUTEVERYPAGEONASITEIFTHEWEBSITELAYOUTHASTOBEALTERED,THENONLYTHEONEBASETEMPLATENEEDBECHANGEDHOWEVER,TOGETTHEFULLVALUEOFTHISAPPROACH,YOUHAVETOCREATEATLEASTTWOJSPFILESFOREACHNEWPAGEDEPLOYEDONEFILEFORTHENEWCONTENTANDTHENASECONDFILETOINSERTTHETEMPLATEANDINCLUDETHENEWCONTENTINTHEFIRSTFILELATERINTHECHAPTER,WESHOWYOUHOWTOUSETILESDEFINITIONSWITHSTRUTSTOAVOIDTHEOVERHEADOFASECONDFILETHEBODYWRAPDEPLOYMENTAPPROACHCOVEREDINTHENEXTSECTIONISANOTHERWAYTOAVOIDTHESECONDFILEBODYWRAPDEPLOYMENTSANYTILECANBEUSEDANYNUMBEROFTIMESINANAPPLICATIONINPRACTICE,THOUGH,MOSTOFTHETILESINYOURAPPLICATIONWILLBECONTENTTILESTHATPROVIDETHEDISTINCTPORTIONOFANYGIVENPAGETYPICALLY,APAGESCONTENTTILEISUSEDONLYONCEINTHEAPPLICATIONTHEHEADER,FOOTER,ANDMENUTILESMAYBEUSEDOVERANDOVERAGAINFROMPAGETOPAGEBUTTHEMULTIUSETILESAREUSUALLYWINDOWDRESSINGFOREACHPAGESSINGULARCONTENTTILEWHENTHISISTHECASE,YOUCANSIMPLYWRAPTHECONTENTTILEWITHTHERESTOFTHESCREENDEFINITIONTHETRICKISTOJUSTPROVIDETHEMARKUPASTHEVALUEOFTHEPUTTAGASSHOWNINLISTING,BESURETOSPECIFYTYPE“STRING“SOTHATTILESDOESNOTMISTAKEITFORTHEPATHTOAPAGETHISAVOIDSCREATINGANEXTRATILEASIDEEFFECTISTHATITPREVENTSABODYTILEFROMBEINGREUSEDONANOTHERPAGEWHENTHEBODYMARKUPDOESNEEDTOBEUSEDINMORETHANONEPLACE,YOUWOULDHAVETOREFACTORTHEPAGESOTHATTHECONTENTISASEPARATETILEAGAINBUTFORNEARLYALLYOURPAGES,THECONTENTTILEWILLBEUSEDONLYONCETHEBODYWRAPISAVERYEFFECTIVEAPPROACHTHEONLYDOWNSIDEISTHATTHESCREENDEFINITIONSAREDISPERSEDTHROUGHOUTTHESITE,WHICHCANMAKESOMEGLOBALCHANGESMOREDIFFICULTTHETILESDEFINITIONS,DESCRIBEDINSECTION,PROVIDEAMORECENTRALIZEDAPPROACHTHATWORKSVERYWELLWITHTHESTRUTSARCHITECTUREBUTTHEBODYWRAPDEPLOYMENTPATTERNCANSTILLBEAGOODCHOICEFORSMALLERAPPLICATIONSADDINGASTYLESHEETSINCETILESAREJSPPAGES,ALLTHEUSUALACCOUTERMENTSAREAVAILABLE,INCLUDINGCSSSW3C,CSSUSINGASTYLESHEETWITHYOURTILESISNOTREQUIREDBUTCANBEHELPFULWHILEFULLSUPPORTOFCSSSELUDESTODAYSBROWSERS,THEYARESTILLAUSEFULWAYTODEFINECOLORSCHEMESANDSOMEOTHERKEYATTRIBUTESSTYLESHEETSHELPENSURETHATTHESENICETIESREMAINCONSISTENTFROMTILETOTILETOSPECIFYASTYLESHEET,SIMPLYINSERTTHEUSUALTAGTHETAGCANHELPRESOLVERELATIVEPATHSTOTHESTYLESHEETSANDOTHERASSETSBETTERYET,USETHETAGTORENDERTHEPATHFORYOU,ANDURLENCODEITINTHEBARGAINLISTINGSHOWSHOWTOUSEBOTHTAGSTEMPLATESANDMVCDYNAMICTEMPLATESWORKESPECIALLYWELLWITHINAMODELVIEWCONTROLLERARCHITECTURESEECHAPTER2FORMOREABOUTMVCUSEDCORRECTLY,DYNAMICTEMPLATESCLEANLYSEPARATEMARKUPFROMCONTENTINPRACTICE,THEPORTIONOFAPAGEWITHTHEACTUALCONTENTISOFTENTUCKEDAWAYINTHECENTER,SURROUNDEDBYAREASDEVOTEDTOMARKUPANDNAVIGATIONCONTENT,MARKUP,ANDNAVIGATIONMAPEASILYTOTHEROLESOFMODEL,VIEW,ANDCONTROLLEROFTEN,ANMVCTEMPLATESYSTEMCANBECREATEDFROMANEXISTINGAPPLICATIONJUSTBYUSINGSTANDARDREFACTORINGTECHNIQUESTHEBASEMARKUPFORTHEPAGECANBEEXTRACTEDINTOAMASTERTEMPLATETHESITEHEADERANDFOOTERAREEXTRACTEDINTOTHEIROWNFILESTHECENTERSQUAREWITHTHEACTUALCONTENTGOESINTOITSOWNTEMPLATEFILEASWELLTHEBASETEMPLATEINCLUDESTHEMBACKAGAINRELATEDTECHNOLOGIES,LIKECSS,CANBEUSEDTODEFINEFORMATTINGINTHEBASETEMPLATEANDHAVEITAPPLYSEAMLESSLYTOTHEOTHERSTHATFORMTHEFINALPAGE中文翻译用TILES开发应用页面布局可用性是现今应用设计的主要考虑而一致性是可用性的主要因素之一。用户想要专注于手边的任务,却容易被应用接口和屏幕布局的一些小毛病所打扰。一致性对动态应用来说还不是个小的挑战;但对手工编码的每个页面来说却是个平常事情。如今已经有许多针对静态页面的布局设计工具可以提供给设计人员。但却很少有针对动态的服务器页面的布局工具。更糟糕的是,一个应用的外观和感觉通常是最后需要处理的细节,然后又在各个版本中经常变动或者干脆来一个更大的整个站点重新改版。这对最后的编码和测试来说仍然是个噩梦,即使是仅仅改变了背景色或者添加了一个连接到菜单中也是如此。当然,一致性不是一个妖怪;它是一个好的设计特性。比如一些其它的组件,WEB页面包含许多通用的元素,页头,页脚,菜单等等。经常,这就是我们在页面间进行拷贝和粘贴的工作。但是像一些组件一样,最着BUG被发现,特征被增强,又导致另一轮的剪切粘贴动作以便“重用”。在WEB应用中,页面标签是一个编程组件,就象其它组件一样,并且应该纳入相同的重用标准。动态模板的分层在本书的第1部分,我们强调了应用分层的重要性,通过这样来隔离变化的影响。通过划分应用层次,我们可以修改某一个部分而不影响另外的部分。同样的概念可以用在表现层,用来分离外观感觉和具体的内容。将页面布局和内容分离的一个方法是使用动态JSP包含。JSP规范提供了动态和静态的包含。标准JSP动态包含的动作是。我们将服务器页面分割为几个碎片来使用动态包含,每个碎片都有其各自应该完成的职责。一个背景模板可以用来设置缺省的格式和布局,页面碎片可以在运行时包含进来,以提供实际的动态内容。动态包含会降被包含页面得输出组合到原始的页面之中。它就象一个开关,将处理流程调用所有被包含页面,然后再返回到调用者。本章涉及的TILES框架使用一种更加高级的JSP包含形式。在一个TILES应用中,背景,或者布局,模板通常定义页头,菜单体,内容和页脚的位置。其它页面然后被包含进来填充这些位置。如果HEADER改变了,仅有那个模板文件需要改变。这个改变将自动影响到包含该页面的所有页面。改变所造成的影响是最小的妖怪被消灭了。标准的HTML组件,象层叠式样式表CSS,也可以很好的和动态模板一起工作。样式表可以保持模板内部的一致性,并进一步最小化改变的影响。模板推论每一种技术都伴随着一定的折衷。这里是模板技术的一些推论用,不用,或者折衷都会伴随在应用中使用动态模板而来JSP包含技术是构建良好的和可靠的,可以扩展至大型应用。包含动态模板的根本技术是JAVASERVLETAPI核心的一部分大多数容器都针对JSP以及象SERVLET包含之类的特征作了优化被包含的页面一般输出HTML片断,而且并不完整。这可以防止在标准的HTML编辑其中维护模板,这些编辑器要求标记是完整的,而且是独立的页面。在代码改变后,大部分网站都重新编译JSP页面。模板创建的更多页面都要监控这种改变。模板实际上重用了那些可能在页面间进行复制的代码。这可以导致可观的节省操作步骤和节省服务器资源使用模板在这一章我们要详细讨论怎样使用模板,特别是使用TITLES框架实现它。这是一个成熟的产品,和STRUTS框架集成的非常好。TILES模板甚至可以从STRUTSACTIONFORWARD来部署,大大消除很多其他模版系统需要的“形式”文件。STRUTS和TILES是一个强大的组合。使用动态模板来产生表现页面和其它一些编写WEB应用的手段是一致的。在这一章,我们将展示如何最好地集成TILES和STRUTS以及其它资产,比如CSS。介绍完TILES之后,我们也提供了一个重构指南,帮助你将现有的应用迁移到TILES上来。组合模板,TILES和STRUTS当HTML表格第一次引入时,页面设计者一刻将采用为一种布局机制。无边框的表格可以用来包含其它表格以及内容,通过这种方式来创建一种其它方式所不能的布局。同样的理念经常用在动态模板中。如图112所示,一个主模板用来提供页面的布局和定位组件,页面片段被包含进来填充这些组件。页面片段可以被包含进各种类型的布局使用无边框表格的;使用标记的,甚至最简单的将一个组件堆在另一个组件之上的布局。TILES是一个使用简单但有效的标记来实现模板和布局的框架。它可以用来替换STRUTS10中的模板标记库但功能更加强大。TILES包可以被其它JSP应用所使用。通常,JSP模板系统都是使用一个模板作为布局,而其它则作为填充组件。TILES称之为布局文件定义(DEFINITION)。大多数模版系统都要求有一个额外的文件用来标识布局。为避免这种麻烦,TILES允许布局定义存储为一个JAVABEAN。而且,在STRUTS中还有个扩展,允许定义是一个ACTIONFORWARD的目标。这是一个激动人心的特征,我们将在后面节中进行讨论。在下一节,在探讨完使用DEFINITION和STRUTS将一个现有的应用重构为基于TITLES的应用之后,再返回来讨论DEFINITAION。但现在,让我们从头开始,创建一个新的布局模板。构建一个布局模板构建布局的第一步是标识组件。对一个经典的WEB页面来说,这些部件可能是页头,菜单,页面体,以及页脚。通常一个简图可以有助于怎样关注页面布局。为提供一个快速的例子,我们将构建一个经典的WEB页面布局,具有页头,菜单,内容体,以及页脚。开发一个新的JSP页面导入TILES标记库创建一个HTML表格,其单元各匹配这个草图对每个布局的部件使用一个TILESJSP标签来命名。你可以在清单中见到,在我们创建来准备放置一个布局组件的地方,我们都放置了一个JSP标签,样子象。这个标签是说在这里插入由属性值指定的片断或者模板文件。当要在应用中使用这个模板的时候,我们会对每一个这些TILE传递一个路径。这将允许我们在多个地方使用同一个模板,只需要简单的传递一个或多个不同路径的组件或片断即可。在大多数情况下,BODY部件可能每个页面都不同,但是在同一区域的所有页面将共享相同的页头和菜单部件。同时,可能同一站点的所有页面都要共享同一个页脚部件。当新的一年过去,就需要在每个页面中更新版权声明,这样便仅有页脚部件需要被更新。只需要加入剩下的HTML标记,我们的经典布局就可以是一个完整的独立的模板页面。在清单中,你将会注意到加入了一个新的TILES标签,。这个标记意思是,将属性值返回为字面字符串,而不是路径名称或者其它命令。为此,TILES调用标准的对象的TOSTRING方法。结果在运行时直接插入到页面之中。L但什么是小部件(TILES)TILES框架提供的模板特征要远远超过标准SERVLET和JSP包含功能所提供的。框架称其模板为小部件TILES。这有助于说明小部件比简单的JSP模板功能更加强大。TILES是你的表现层的构建块。技术上,TILE是一个JSP页面中的一个矩形区域,又是称之为区域REGION。TILE也可以由其他TILE装配而成。TILE可以递归构建,并表现为一个树。根节点通常是页面。最终的节点,叶子,包含了页面的内容。中间的节点通常就是布局了。布局节点是工具TILE,它可以定位页面中的TILE,或者为内容TILE提供背景标记。TILE对象支持一些重要的特征,包括参数和定义。参数TILE可以在运行时接受不同的信息,格式为参数PARAMETER或者属性(ATTRIBUTE)。这意味着TILE是可参数化的。它们可以接受不同的信息并根据这些信息出现不同的效果。TILES参数通常称为属性(ATTRIBUTE)以避免和请求参数相冲突。TILE属性在插入TILE时定义,并仅在TILE内可见。它对子TILE和包含该TILE的页面也是不可见的。这样在同一个TILE被在一个页面中使用数次的情况下也可以避免名称冲突。开发人员可以专注于如何最好的使用好TILE而不用担心名称冲突。TILE属性可以是字符串或者其它类型。定义(DIFINITION)如果综合在一起,传递给TILE的各种属性实际上创建了一个屏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北汽知识培训集团课件
- 校园食堂食品安全知识培训课件
- 校园消防知识培训课件新闻稿
- 校园消防安全知识培训
- 物业人民调解员考试试题及答案
- 国画荷花面试题及答案
- 电气制图考试题及答案
- java算法排序面试题及答案
- 法院审判面试题及答案
- 石油普工考试试题及答案
- 2025年郑州银行招聘考试(行政能力测验)历年参考题库含答案详解(5套)
- 园艺生物技术应用与发展
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 网约车停运损失赔偿协议书范文
- 正确的母乳喂养姿势
- 新北师大版高中英语选择性必修一词汇表(word精校版)
- 什么是标准化沟通
- 产前筛查规范化流程和质量控制侯巧芳 课件
- 询价投标文件范本
- 《固体物理学》全册完整教学课件
- 隧道二衬拱顶模板支架计算书
评论
0/150
提交评论