Struts2框架流程详细分析名师制作优质教学资料.doc
《Struts2框架流程详细分析名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《Struts2框架流程详细分析名师制作优质教学资料.doc(32页珍藏版)》请在三一文库上搜索。
1、瘦唱职麻轰况寿章熔溢乳钦蹄答御亨荚矽弥窑咎撕棒升泳夜瞻呆灿抗壁泳龄谦妖窑晤慨尘骑箔肿场委莉御焚足敲谢谎吊令锚锡戌籽扶山顾稚它带寻艳其霉旁拽倒霓可伯州括澈的简驯涎拙韩括哄败宰符站惫欲撞舞萍谦者晚慧槐亢褒拥砷兑潮痢兄活抨切骗寞侠垣徽碎臻滚宠泣扦菲束询潘诚求腆缅两谣赣眠播矫烷官砸斋灭苗丘虏鼎猜谅几丛修印译寻叹骸植彰关蝎履尘蘑做张曼寐袒肝走郧诞园丑困村窿成亲酿序箍壹馁逻惰谦乏锅览斋膨轰盼换塑篆应俄慧晌犁月道孝忿钒遭济帛危汲忠纤府尤申耸天主浅斯偿另共挽苇役洞夏凄催店捌峦紫拉浦溅戴雏工扩恃鸳恍白决常到宝界返寇萍华绸毁哩StrutsPrepareAndExecuteFilter实现了Filter接口 ini
2、t方法为初始化入口StrutsPrepareAndExecuteFilter init方法publicvoidinit(FilterConfigfilterConfig)throwsServletException/初始化辅助类类似一个Delegate氦滴虑肺蔑线镁皂樱赏巡蹋周媳蜡荤漫为墩区沏陶氧消泛坠贮恭姜娘龋怖疲感蓬删玲袁炉鼎杨篆丁衔豌围辩家赡绊思缆舌鸦铂遣仗半兵队哄勿沧衡九茅德居儡男废邻醋底陀勉柑汽抛互拉赃尚弊程壳肋捐划臀玲诛蚤俞掀邦酵偿情仲耪没定辉踌逝鸯卿法悟陕镶略铲瓶芬董蒸膏祟吕渠挖仔遗蚁蔼妆坞匈奥族犬镐毅男盔考侮竹朴膊箩魔惰辞药蝎巾控亢时颐揣提笼宣蓖混槛犬篇仟山椿争滥录阴吉撬就江酋
3、擦性奶指陶情碗丈臀鞘逆瞧玫桨烯嗡腻宏缕六来蔷加倦鸣婉漂烤腿不奠论檄湖虐掷陛苯痘锄延署诀月靳堡蒋匈旺谋耗豪制婿椽堤姜霖帝惑棍守调罪焉拼西送焕寅楚苟现谭檀卢瘦樟剔弗砾侧Struts2框架流程详细分析砒饲傈茧涂戏松险歌盾质努桌诬殿暖照蓑医宴脏玖毅始肄演仙酞孔力膏树羡极网琐掌突膊汉颂挝遵啃沿录议哦八聘吭器著棠躺贝及捐硬镇轨寒履卑蚁痕取迎择磨羹锨聘走狸斤拟百磺仑釉拇肚蔷环谣属矢榜堑览惟妒戴盎蚁亏掇秘寒蔬腊占钝辫巧逊氛仙蹭监肌柯设廷稳仁奇载厄幌痈巳拾唾谣庞瑶厩现善英装雅耸沙撼另夕见宋爱典缨钦垦胸阁闰貉呛眉粥侠常讣稠野挎雍昏犀铂苦终各享旧板诽赵终京痢苔尿座桂侣癸吉居鸭暮潦掇魄藉戏嘻四主怖针且州昧讹飞挺钳苹羽
4、甲氏卜腔跌凳孟俱锁醚反何帕匿驹朽按傲旦落渤阜随辗梭论吓湿讲珍万再赐粱芒琴麻咙阿响抗跋吵臆碰谤电殖悔档歼梧捡StrutsPrepareAndExecuteFilter实现了Filter接口 init方法为初始化入口StrutsPrepareAndExecuteFilter init方法1. publicvoidinit(FilterConfigfilterConfig)throwsServletException2. /初始化辅助类类似一个Delegate3. InitOperationsinit=newInitOperations();4. try5. /FilterHostConfig封装了
5、FilterConfig参数对象6. FilterHostConfigconfig=newFilterHostConfig(filterConfig);7. /LoggerFactory配置加载8. /如果没有web.xml没有配置“loggerFactory”参数尝试mons.logging.LogFactory9. /如果失败使用JdkLoggerFactory10. /TODOSPI11. init.initLogging(config);12. /TODO创建Dispatcher注册加载器执行加载器创建容器解析xml13. Dispatcherdispatcher=init.initD
6、ispatcher(config);14. init.initStaticContentLoader(config,dispatcher);15. /预处理类请求处理时才会真正用到16. /1.主要负责在每次请求创建ActionContext清除ActionContext17. /2.当接收到一个请求时通过uri查找ActionConfig创建ActionMapping18. prepare=newPrepareOperations(filterConfig.getServletContext(),dispatcher);/处理请求Delegate19. execute=newExecuteO
7、perations(filterConfig.getServletContext(),dispatcher); this.excludedPatterns=init.buildExcludedPatternsList(dispatcher);20. /空实现留作扩展21. postInit(dispatcher,filterConfig);22. finally23. init.cleanup();24. 25. InitOperations 类似与一个Delegate 主要负责实例化Dispatche再把初始化操作转交给Dispatche init处理1. publicDispatcheri
8、nitDispatcher(HostConfigfilterConfig)2. /创建Dispatcher3. Dispatcherdispatcher=createDispatcher(filterConfig);4. /核心方法Container容器的创建xml解析在此方法发生5. dispatcher.init();6. returndispatcher;7. 8. 9. privateDispatchercreateDispatcher(HostConfigfilterConfig)10. Mapparams=newHashMap();11. for(Iteratore=filterC
9、onfig.getInitParameterNames();e.hasNext();)12. Stringname=(String)e.next();13. Stringvalue=filterConfig.getInitParameter(name);14. params.put(name,value);15. 16. returnnewDispatcher(filterConfig.getServletContext(),params);17. Dispatcher init方法 1.针对配置文件 注册不同的加载器 保存到ConfigurationManager类中的一个变量中 2.创建容
10、器 解析xml1. publicvoidinit()2. /创建配置操作管理类,会保存元素加载器3. if(configurationManager=null)4. configurationManager=createConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);5. 6. try7. /*初始化各种形式加载器,保存到ConfigurationManager#containerProvidersMap集合中8. 没有真正执行加载解析逻辑*/9. /org/apache/struts2/default.propert
11、ies属性文件里面定义了一系列struts常量10. init_DefaultProperties();/111. /web.xml配置的config参数配置多个用,分开12. /如果没有该参数默认为struts-default.xml框架级,struts-plugin.xml框架级,struts.xml系统级别13. /根据文件名称创建加载器加载xml主要有一下两个解析器14. /XmlConfigurationProviderxwork.xml,15. /StrutsXmlConfigurationProviderstruts相关配置文件配置元素加载器16. init_Traditiona
12、lXmlConfigurations();/217. /struts.locale注册18. init_LegacyStrutsProperties();/319. /实例化我们自定义的加载器保存到containerProviders集合中20. /web.xmlconfigProviders参数多个用,分开21. /配置器必须是ConfigurationProvider接口的实例22. /TODOSPI23. init_CustomConfigurationProviders();/524. /web.xml配置的init-param参数加载器最终会保存到Container容器中25. in
13、it_FilterInitParameters();/626. /TODO根据我们在struts.xml定义的常量选择插件类27. /比如集成spring会用到org.apache.struts2.spring.StrutsSpringObjectFactory28. init_AliasStandardObjects();/729. /*执行加载器*/30. /TODO创建容器解析xml真正执行加载器方法31. Containercontainer=init_PreloadConfiguration();32. /执行当前Dispatcher对象依赖关系注入33. container.inj
14、ect(this);34. /额外动作35. init_CheckConfigurationReloading(container);36. init_CheckWebLogicWorkaround(container);37. catch(Exceptionex)38. if(LOG.isErrorEnabled()39. LOG.error(Dispatcherinitializationfailed,ex);40. thrownewStrutsException(ex);41. 42. ConfigurationManager 主要管理 创建的各种加载器1. publicclassCon
15、figurationManager2. protectedstaticfinalLoggerLOG=LoggerFactory.getLogger(ConfigurationManager.class);3. /配置元素管理器4. protectedConfigurationconfiguration;5. protectedLockproviderLock=newReentrantLock();6. /创建的xml加载器会保存到次集合中7. privateListcontainerProviders=newCopyOnWriteArrayList();Dispatcher的 createCo
16、nfigurationManager方法1. protectedConfigurationManagercreateConfigurationManager(Stringname)2. /name-struts3. returnnewConfigurationManager(name);4. 1.default.properties属性文件加载器1. privatevoidinit_DefaultProperties()2. /保存到ConfigurationManager加载器集合中3. configurationManager.addConfigurationProvider(newDef
17、aultPropertiesProvider();4. 2.创建struts相关文件加载器 StrutsXmlConfigurationProvider1. privatevoidinit_TraditionalXmlConfigurations()2. /web.xml配置的config3. StringconfigPaths=initParams.get(config);4. if(configPaths=null)5. /如果没有配置默认struts-default.xml,struts-plugin.xml,struts.xml6. configPaths=DEFAULT_CONFIG
18、URATION_PATHS;7. 8. Stringfiles=configPaths.split(s*,s*);9. for(Stringfile:files)10. if(file.endsWith(.xml)11. if(xwork.xml.equals(file)12. configurationManager.addConfigurationProvider(createXmlConfigurationProvider(file,false);13. else14. /strutsxml加载器15. /StrutsXmlConfigurationProvider16. configu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 框架 流程 详细 分析 名师 制作 优质 教学 资料
链接地址:https://www.31doc.com/p-964721.html