-
从源码总结struts2命名空间的匹配规则
以前看帖子中经常发现有关于命名空间的问题,如:有关""与"/"的区别、模糊匹配的规律等,下面是我根据源码中分析、总结的规律,希望对大家有所帮助。如果存在异议,希望大家能够及时反映。 采用的版本是struts2-2.1.6。 struts2中的命名空间归结起来其实有三种:...2013-03-12 阅读200
-
struts2请求处理过程源代码分析(1)
网上对于struts2请求处理流程的讲解还是比较多的,有的还是非常详细的,所以这里我就简单地将大概流程总结下,有了个大概印象后理解起源码就会有一定的思路了: struts2的请求处理过程实际上是在初始化中加载的配置及容器的基础上,通过请求的url分析出命名空间、action名称、方...2013-03-11 阅读200
-
struts2源码分析之初始化(3)
接着第一篇,第一篇最后说道了在实际使用中会在生成一个运行时的configuration,进入com.opensymphony.xwork2.config.impl.DefaultConfiguration类的rebuildRuntimeConfiguration()方法,该方法就是专门用于生成运行时configuration的,F5进入: public void rebuildRuntimeConfiguration() { runtimeConfiguration = buildRuntimeConfiguration(); } 方法中...2013-02-28 阅读211
-
struts2源码分析之初始化(2)
容器,一般来说就是存放java bean 的,然后再需要的时候从容器中取就可以了,从用户使用角度来说是非常简单了,但是如果要把它的内部构造弄清楚其实还要知道其他的东西,比如容器内的对象是怎样创建的、怎样初始化的、怎样存储的、通过什么方式获取的等等。每个容器都有它自己的规则,但归结起来却又大同小...2013-02-25 阅读188
-
struts2源码分析之初始化(1)
本次解析使用的版本是:struts2-2.1.6、xwork-2.1.2 struts2在初始化过程中其实已经将它的内部结构、组件都建立起来了,通过了解它的内部结构我们就可以清晰的看到其内部实现机制、原理是怎样的。从而对于我们加深理解、灵活运用都会有很大好处。接下来就开始分析下。 ...2013-02-22 阅读199
-
Digester源码解析(4讲)
本篇主要说下Digester的内置属性是怎样通过相互配合最后生成java Bean的。还是以第一篇的demo为例: digester.push(new DigesterDemo()); //指明匹配模式和要创建的类 digester.addObjectCreate( "students/student", Student.class); //将元素属性也映射到对象中 digester.addSetProperties( "students/student"); //当移动到下一个标签中时的动作 digester.addSetNext( "students/stude...2013-02-21 阅读187
-
Digester源码解析(3讲)
在进行下面的源码解析之前,我们先来讨论个概念----节点工作环境。 看了org.apache.commons.digester.Digester的源码会知道Digester类继承了DefaultHandler类,而DefaultHandler实现了包括ContentHandler接口在内各种处理器接口,因此Digester也是一个ContentHandler处理器,那么当xml文档 被解析时,当解析到某一元素时就会依次调用Digester的startElement()、characters()、endElement()三个方法。由于这三个方法在不同时点运行,所以...2013-02-19 阅读186
-
Digester源码解析(2讲)
接着上一篇。这篇我们来分析有关匹配模式规则配置,及规则管理的源码。 匹配模式(matching pattern)的规则(rule)是如何配置上去的,以创建对象规则ObjectCreateRule为例,如下: //指明匹配模式和要创建的类 digester.addObject...2013-02-17 阅读212
-
Digester源码解析(1讲)
Digester 是apache 下 commons常用组件库中的一个工具,其主要功能就是将xml文件转为java bean。它是通过sax的方式解析xml文档。 struts1 中读取配置文件就是使用Digester。今天我们就来解析下Digester的源码。本次解...2013-02-15 阅读226