This page last changed on Jun 18, 2004 by plightbo.

综述

WebWork建立在XWork的组件实现之上, 提供组件对象的生命周期管理并使组件在需要时可以用于活动类(或其他任何用户代码中).

WebWork中有两种类型的类可以使用enabler接口实现反转控制: 活动和组件. 为了让活动类拥有它自己的组件集合, 必须使用ComponentInterceptor为活动设置资源. 同样的, 如果这些组件需要初始化并使用其他组件, 这些初始化活动将在ComponentInterceptor截取活动的时候进行.

范围(Scope)和生命周期

在WebWork中组件可以被配置成存在于三个范围中:

  1. 一个请求期间,
  2. 跨越一个用户会话, 或
  3. Web应用的整个运行周期.

WebWork 延迟加载(lazy load)组件, 这意味着无论哪一范围的组件, 都在使用是开始初始化并在范围的生命周期结束时销毁. 也就是说, 一个application范围的组件, for example, 将在第一个实现组件的Enabler接口的活动的用户请求时初始化, 并在应用结束时被销毁.

组件可以依赖于其他组件, 但不能依赖于更小范围的组件. 因此, 一个session范围的组件不能依赖于一个请求范围的组件.

所有组件必需注册在components.xml中, 对该文件的描述在"配置"一节中.

获取ComponentManager

每一次请求时都存在三个组件管理器, 每个范围一个. 他们作为一个属性"DefaultComponentManager"存在于他们代表的范围对象中. 因此, 如果你需要一个request范围的ComponentManager对象, 使用下面的代码:

ComponentManager cm = (ComponentManager) request.getAttribute("DefaultComponentManager");
Document generated by Confluence on Dec 14, 2004 16:36