Struts2 运行流程分析之doFilter

注意: 本文基于Struts2.2.1版本进行的代码分析 首先先大致看一下StrutsPrepareAndExecuteFilter.java的doFilter的实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; try { // 设置request/response编码 prepare.
Read more...

XWork框架中的容器设计

“容器”是用来解决:“在程序的运行期,应该如何创建我们需要的对象?” 和 “当创建新对象,该对象依赖的对象也能正确被创建出来?” 对象的生命周期管理包含哪两个方面的内容 ? 在程序运行期,对象实例的创建和引用机制. 对象与其关联的对象的依赖关系的处理机制.
Read more...

深入理解OGNL

OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 0x01 为什么要引入表达式引擎 ?表达式引擎在Web开发中有什么重要作用 ? 同一个对象 ,在 “弱类型 ”的平台和一个 “强类型 ”的平台之间交互 ,就必须有一个非常重要的 “翻译 ”角色解决这种 “不匹配 ” 。这个角色 ,就是我们所说的表达式引擎 ,它充当着桥梁作用 ,保证数据能够顺利地在MVC的各个层次进行流转 。 0x02 一个合格的表达式语言应该具备什么? 能够处理表达式与对象之间的映射关系,并且这种关系是双向的。 能够支持丰富多样的表达式语法计算。 能够支持必要的数据类型转换.
Read more...

Struts2框架源码分析:概况

Struts2和Struts1.x有什么区别? 他们各自发展轨迹又如何? Struts1是Apache社区在2000年3月31号发布的一款javaweb框架. 随着时代进步,Struts1的不足显而易见,此时Opensymphony开源了一款优秀的web框架,名为Webwork2. Apache社区在2005年12月14日宣布Struts项目和Webwork2项目合并,推出名为Struts2的Web框架. Strus2框架开始进入辉煌时代. Struts2依赖于那些核心技术? 表示层技术, Struts2表示层主要是整合, 如整合Freemarker或Velocity为核心的模板技术、构建Flash应用的Flex技术、ajax技术等,以plugin形式进行整合.
Read more...