struts2核心工作流程与原理

上传人:枫** 文档编号:508613706 上传时间:2023-05-04 格式:DOCX 页数:17 大小:116.92KB
返回 下载 相关 举报
struts2核心工作流程与原理_第1页
第1页 / 共17页
struts2核心工作流程与原理_第2页
第2页 / 共17页
struts2核心工作流程与原理_第3页
第3页 / 共17页
struts2核心工作流程与原理_第4页
第4页 / 共17页
struts2核心工作流程与原理_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《struts2核心工作流程与原理》由会员分享,可在线阅读,更多相关《struts2核心工作流程与原理(17页珍藏版)》请在金锄头文库上搜索。

1、这是Struts2官方站点提供的Struts 2 的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤1.客户端提起一个(HttpServletRequest)请求,如上文在浏览器中输入”http:/localhost:8080/TestMvc/add.action”就是提起一个(HttpServletRequest)请求。2.请 求被提提交到一一系列(主主要是三三层)的的过滤器器(Fiilteer),如如(AcctioonCoonteextCCleaanUpp、其他他过滤器器(SiiteMMeshh等)、 FillterrDisspattcheer)。注注意这里里是有顺顺序的

2、,先先ActtionnConntexxtClleannUp,再再其他过过滤器(SiteMesh等)、最后到 FilterDispatcher。3.FillterrDisspattcheer是控控制器的的核心,就就是mvvc中c控制层层的核心心。下面面粗略的的分析下下我理解解的FiilteerDiispaatchher工工作流程程和原理理:FilteerDiispaatchher进进行初始始化并启启用核心心doFFiltter其其代码如如下:ppubllicvoiidddoFiilteer(SServvlettReqquesstrreq,SeervlletRRespponsserres,Fiil

3、teerChhainnchhainn)tthroowsIOEExceeptiion,SeervlletEExceeptiionHtttpSeervlletRRequuesttreequeest=(HtttpSeervlletRRequuestt)rreq;HHttppSerrvleetReespoonseereespoonsee=(HtttpSServvlettRessponnse)rees;SeervlletCConttexttseervlletCConttextt=fillterrConnfigg.geetSeervlletCConttextt();/在在这里处处理了HHttppSerrv

4、leetReequeest和和HtttpSeervlletRRespponsse。DDisppatccherrUtiilsdu=DDisppatccherrUtiils.gettInsstannce();duu.prrepaare(reqquesst,ressponnse);/正如这这个方法法名字一一样进行行loccalee、enccodiing以以及特殊殊reqquesstpparaametterss设置tryyreequeest=ddu.wwrappReqquesst(rrequuestt,sservvlettConntexxt);/对reqquesst进行行包装cattch(IOOExc

5、cepttionne)SStriingmesssagge=CCoulldnnotwraapsservvlettreequeestwitthMMulttipaartRRequuesttWraappeer!;LOOG.eerroor(mmesssagee,ee);tthroownewwSeervlletEExceeptiion(messsagge,e);AcctioonMaappeerIFFmaappeer=AcctioonMaappeerFaactoory.gettMappperr();/得到到acttionn的mappperrAActiionMMapppinggmaappiing=mmappp

6、er.gettMapppinng(rrequuestt);/得得到acctioon的的maappiingiff(mmapppingg=nuull)/ttherreiisnnoaactiioninthiisrrequuestt,sshouuldweloookfforasstatticressourrce?StrringgreesouurceePatth=ReequeestUUtills.ggetSServvlettPatth(rrequuestt);iif(.equualss(reesouurceePatth)&nulll!=rrequuestt.geetPaathIInfoo()ressour

7、rcePPathh=reqquesst.ggetPPathhInffo();iif(trrue.eqqualls(CConffiguurattionn.geet(WWebWWorkkConnstaantss.WEEBWOORK_SERRVE_STAATICC_COONTEENT)&reesouurceePatth.sstarrtsWWithh(/webbworrk)Sttrinngnnamee=ressourrcePPathh.suubsttrinng(/weebwoork.leengtth();finndSttatiicReesouurcee(naame,reespoonsee);ellse

8、/tthississanorrmallreequeest,leetiitppasssthhrouughchaain.doFFiltter(reqquesst,ressponnse);/WWWddiditssjoobhhereeretturnn;OObjeecto=nuull;ttry/settupCConttainner(reqquesst);o=beeforreAcctioonInnvoccatiion(reqquesst,serrvleetCoonteext);/整个框框架最最最核心的的方法,下下面分析析du.serrvicceAcctioon(rrequuestt,rrespponsse

9、,serrvleetCoonteext,maappiing);ffinaallyyaffterrActtionnInvvocaatioon(rrequuestt,sservvlettConntexxt,o);ActtionnConntexxt.ssetCConttextt(nuull);du.serrvicceAcctioon(rrequuestt,rrespponsse,serrvleetCoonteext,maappiing);/这个方方法询问问ActtionnMappperr是否需需要调用用某个AActiion来来处理这这个(rrequuestt)请求求,如果果ActtionnMappp

10、err决定需需要调用用某个AActiion,FillterrDisspattcheer把请请求的处处理交给给ActtionnProoxyppubllicvoiidsservviceeActtionn(HtttpSServvlettReqquesstrrequuestt,HHttppSerrvleetReespoonseereespoonsee,SStriingnammesppacee,SStriingacttionnNamme,MappreequeestMMap,MaappparaametterMMap,MaapssesssionnMapp,MMapapppliccatiionMMap)HHa

11、shhMappexxtraaConntexxt=crreatteCoonteextMMap(reqquesstMaap,parrameeterrMapp,ssesssionnMapp,aappllicaatioonMaap,reqquesst,ressponnse,geetSeervlletCConffig();/实例例化Maap请求求,询问问ActtionnMappperr是否需需要调用用某个AActiion来来处理这这个(rrequuestt)请求求eextrraCoonteext.putt(SEERVLLET_DISSPATTCHEER,thiis);OgnnlVaalueeStaack

12、staack=(OgnnlVaalueeStaack)reequeest.gettAtttribbutee(SeervlletAActiionCConttextt.WEEBWOORK_VALLUESSTACCK_KKEY);iff(sstacck!=nnulll)exxtraaConntexxt.pput(ActtionnConntexxt.VVALUUE_SSTACCK,nnewOgnnlVaalueeStaack(staack);tryyActtionnProoxyprooxy=AActiionPProxxyFaactoory.gettFacctorry().crreatteAcctioonPrroxyy(naamesspacce,acttionnNamme,exttraCConttextt);/这里里acttionnNamme是通通过两道道gettActtionnNamme解析析出来的的,FFiltterDDisppatccherr把请求求的处理理交给AActi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号