任何使用struts 2动作类的多种方法?

时间:2012-08-13 04:01:17

标签: struts2

我有经验的struts1.x,默认情况下,所有动作类都是单例行为 我们可以通过扩展DispatchAction类在单个动作类中编写多个方法,这样对方法的任何数量的请求都只会创建一个对象并共享所有实例成员。

但是在Struts2中,有一个编写多种方法的功能 在struts2中,对于每个请求,都将创建新实例。那么在单个Action类中编写多个方法有什么用呢? 每个方法的更多内容可能有多个实例成员,那么如果你将它们组合起来并创建一个单独的对象,每次创建对象都会占用大量的内存。
你能告诉我在Struts2.x的单个Action类中编写很多方法有什么用?

2 个答案:

答案 0 :(得分:2)

Struts1和Struts2的设计方式和编写动作类的方式完全不同。

动作基本上代表了一组相关操作的用户操作。这是一个以良好的方式模块化应用程序的功能。虽然您可以自由地在动作类中定义单个方法,但我相信它会破坏目的行动课以良好的方式。

例如,假设我们想要开发一个包含

的用户管理功能
  1. 用户注册。
  2. 用户更新
  3. 其他一些用户功能。
  4. 如果仔细观察,我们将创建一个User bean来保存与用户相关的属性,现在我们需要考虑ActionClasses的设计。 我将使用

    等方法创建UserManagementAction
    1. 的createUser
    2. UpdateUser两个
    3. 任何其他此类方法
    4. 在我看来,这种方法将集中用户管理系统,因为所有这些方法都与用户管理功能相关,您的操作类的所有组件都可用,如用户bean,用户服务等,因为它们特定于用户和将在所有方法调用中使用。

      另一方面,对于第二个appraoch,我们留下了一个选择,比如为

      等每个功能创建Action
      1. UserRegistrationAction
      2. UpdateUserAction
      3. 在所有这些行动中,我们正在复制大多数商业DTO的服务类和除了痛苦之外的任何其他实用方法,以便有这么多的动作和一些不必要的配置。

        简而言之,它的设计决策方式以及您希望如何设计和开发应用程序。

答案 1 :(得分:1)

即使在struts1动作类中,在struts2中允许多个方法的原因与Object创建(Action类)无关。原因是帮助开发人员对在单个类中执行类似操作的操作进行分组。例如,如果您有实体说product,则可能需要createmodifyremove产品。出于代码组织的目的,如果您在单个操作类中具有这些操作,即create, modify and remove,则它将是干净的。 因此,对于每个请求,都会创建一个动作类的实例,并在提供请求后将其销毁。