(Struts2)XWork容器的实现机理】的更多相关文章

模板方法----callInContext 翻开ContainerImpl的实现,我们可以看到callInContext,这个模板方法是容器所有操作调用的基础. 关于模板方法模式,大家可以看出刘伟老师的博客: 模板方法模式深度解析 至于为什么要用模板模式,是为了将所有容器接口进行规范化定义. 我们看看callInContext <T> T callInContext( ContextualCallable<T> callable ) { Object[] reference = l…
本文是<<struts2 技术内幕>>的学习笔记 在进行面向对象编程的时候,我们不可避免地要使用继承实现等等java提供的语法支持.但是复杂的对象关系也为对象生命周期的管理带来了至少以下两个问题. 1 程序运行时,应如何双肩我们所需要的对象. 2 当创建一个对象后,如何保证与其相关联的依赖关系也正确的被创建处理. 好在先辈们已经给我们想好了出路------在程序中引入一个额外的编程元素:容器(Container) 对象的生命管理周期 首先我们得引入一个概念-----控制反转(Inv…
exploit-db网站在7月14日爆出了一个Struts2的远程执行任意代码的漏洞. 漏洞名称:Struts2/XWork < 2.2.0 Remote Command Execution Vulnerability 相关介绍: http://www.exploit-db.com/exploits/14360/ http://sebug.net/exploit/19954/ Struts2的核心是使用的webwork框架,处理 action时通过调用底层的getter/setter方法来处理h…
我们可以看到,在Container的默认实现,ContainerImpl中有两个实例变量.factoris和factoryNamesByType. 对象制造工厂 class ContainerImpl implements Container { final Map<Key<?>, InternalFactory<?>> factories; final Map<Class<?>, Set<String>> factoryNamesB…
对象的生命周期的管理是面向对象编程亘古不变的话题,从syntax的角度,面向对象的高级编程语言都是以“对象”为核心,而对象之间的继承关系.嵌套引用关系构成的对象树结构为我们进行对象级别的逻辑操作提供了足够的语法支持.而对象之间的这种复杂的关系也为对象生命周期的管理带了难题: 1.运行期,对象实例的创建和引用机制 2.对象及其关联对象之间的依赖处理机制. 为了解决这个难题,业界在程序逻辑中引进了一个额外的编程元素(Container), (由一系列操作对象的接口构成其中至少包括获取对象实例和管理对…
struts2的工作机制 原文:http://eoasis.iteye.com/blog/642586 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过.实际上 Struts1.x与Struts2并无我们想象的血缘关系.虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核 心设计完全改变,从思想到设计到工作流程,都有了很大的不同. Struts2是Strut…
第2.3章 基础 三种类模式:属性-行为模式.属性模式.行为模式. 其中属性模式有:PO(持久化对象).BO(业务对象).VO(值对象).DTO(传输数据对象).FromBean(页面对象)他们是对JavaBean的扩展增强.行为模式其中的方法是"请求对应模式"的天然载体. 当我们载入一个Jar包到classpath时,实际上是获得了Jar对JDK的额外支持.框架仅仅是一个jar包而已,其本质是对JDK功能扩展. 最佳实践:实际上是无数程序猿在经过了无数次的尝试后,总结出来的处理特定问…
读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过.实际上Struts1.x与Struts2并无我们想象的血缘关系.虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同. Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并…
1.自动类型转换 Struts2内部提供大量类型转换器,用来完成数据类型转换问题: String和boolean.Boolean:完成字符串与布尔值之间的转换 String和char.Character:往常字符串与字符之间的转换 String和int.Integer:完成字符串与整型之间的转换 String和long.Long:完成字符串与长整型值之间的转换 String和double.Double:完成字符串与双精度浮点值的转换 String和float.Float:完成字符串和单精度浮点之…
Atitit.struts2体系结构大总结 1. 国际化与异常处理 2 2. 第5章 拦截器 2 3. 第7章 输入校验 2 4. 避免表单重复提交与等待页面 2 5. Struts 2对Ajax的支持 2 6. 服务端控件 2 7. 类型转换 2 8.  第8章 输入验证 2 9.  第9章 消息处理与国际化 2 10.  第10章 Model Driven和Preparable拦截器 2 11. XWork中的Ioc 容器 3 12. 灵丹妙药 -- OGNL,数据流转的催化剂 3 13. …