WebWork中实现IoC(4)

王朝java/jsp·作者佚名  2006-01-30
窄屏简体版  字體: |||超大  

4、在WebWork和XWork中配置组件

(1)配置web.xml

要配置WebWork的组件管理,需要在web.xml中加入下面各行:

<filter>

<filter-name>container</filter-name>

<filter-class>com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>container</filter-name>

<url-pattern>*.action</url-pattern> <!-- modify appropriately -->

</filter-mapping>

<listener>

<listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class>

</listener>

<listener>

<listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>

</listener>

这些设置允许WebWork在application、session和request范围内管理组件。注意,即使你的应用程序某种范围没有并不需求,也都要包括。

(2)配置xwork.xml

ComponentInterceptor用来将IoC模式应用到XWork的Action中。因此,必须在xwork.xml中使用<interceptors>来声明ComponentInterceptor:

<interceptor name="component"

class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>

如果你想应用IoC到Action和组件以外的对象,需要直接使用ComponentManager。

另外,ComponentInterceptor已经在WebWork的defaultStack应用。因此,如果你在xwork.xml中应用了defaultStack,就已经包含ComponentInterceptor了。

(3)配置components.xml

components.xml用来定义可用的组件。这里指定的组件会被加载到XWork的ComponentManager,对成为指定enabler实例的Action有效。components.xml必须放在WEB-INF/classes目录下。

下面的例子在components.xml中配置名为Counter组件,它的生命周期范围是session,将会被传递给实现CounterAware接口的对象:

<components>

<component>

<scope>session</scope>

<class>com.opensymphony.webwork.example.counter.Counter</class>

<enabler>com.opensymphony.webwork.example.counter.CounterAware</enabler>

</component>

</components>

每个component有三个属性:

l scope:组件生命周期范围,有效值为applaction、session和request

l class:组件类全路经

l enabler:enabler类或接口(后者推荐使用),任何作为enabler实例的Action,都会被传递组件实例

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航