jetty xml解析

1 configure

configure为xml的根结点,class指定所配置的对象的类,这个configure会创建一个该类的对象,然后根据该xml对其进行配置。id用来对该对象进行标识,在整个jetty中具有唯一性,相同id的xml configure文件配置的是同一个对象。

2 set

<Set name=xxx type=xxx class=xxx>value</Set>

无论value处是什么元素,其返回值都作为setXxx()函数的参数,即setXxx(value)。

name用来确定该setter的名字,setXxx。

type用来指示value的类型,一般情况下可以省略。

如果有class,那么这就是该类的一个static的调用。

3 get

<Get name=xxx class=xxx>operation</Get>

name用来确定该getter的名字,getXxx。

如果有class,那么也是调用该类的一个static的getter。

Get会返回一个对象A,然后再调用该对象A的operation,可以是set、call、get、put等。

4 调用set、get、put、call的对象

是离它们最近的标签所决定的对象在调用它们,比如如果set在<Get></Get>这个范围内的话,那么这个set就是由getXxx方法返回的对象调用的。类似,如果set是在<Configure></Configure>这个范围的话,那么这个setXxx方法就是由根对象调用的。

5 put

调用put的对象必须要实现Map接口,也就是说,调用put的对象必须是一个key-value pair的map对象。

<Put name=xxx type=xxx>value</Put>

其中name/value就是key-value pair,而type用来指定value的类型。

6 call

<Call name=xxx>

    <Arg>value<Arg/>

    各种其它的标签

</Call>

在当前scope的对象的继承上调用xxx(value)函数,参数是value,由Arg指定,然后返回一个对象。然后调用这个对象的由“各种其它的标签”指定的函数。

7 <Arg>

指定函数的参数。

8 <New>

<New class=xxx>

    <Arg>value</Arg>

    各种其它标签

</New>

创建类xxx的新的对象,构造函数的参数为value,创建新的对象后,调用该对象的“各种其它标签”指定的方法。

9 <Ref>

<Ref refid=xxx></Ref>,返回id xxx指定的对象的引用,用来作为各种value值。

<Ref refid=xxx>

    各种其它标签

</Ref>

这种情况下,先返回id xxx指定的对象的引用,然后再调用该对象的“各种其它标签”指定的方法。

10 SystemProperty和Property

类似于get,获取property。注意,它们两个都是返回一个值。

例如<Property name="jetty.home" default="."/>,去获取jetty.home这个属性的值,并且返回,如果没有,就返回“.”。

这个是可以用于拼接路径的,比如

<set name="war"><Property name="jetty.home" default="."/>/webapps/SpringMVCTest.war</set>

其中“<Property name="jetty.home" default="."/>/webapps/SpringMVCTest.war”构成value,如果jetty.home返回“/home/chao/jetty-home”的话,整个value就应该是“/home/chao/jetty-home/webapps/SpringMVCTest.war”。

11 Array和Item

<Array type="java.lang.String">
   <Item>value0</Item>
   <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
</Array>
等价于
String[] a = new String[] { "value0", new String("value1") };

12 Map、Entry和Item

<Map>
  <Entry>
    <Item>keyName</Item>
    <Item><New class="java.lang.String"><Arg>value1</Arg></New></Item>
  </Entry>
</Map>
等价于
Map m = new HashMap();
m.put("keyName", new String("value1"));



原文地址:https://www.cnblogs.com/hustdc/p/8366606.html