0

私はstruts1.xを経験しました。この場合、すべてのアクションクラスはデフォルトでシングルトン動作です。
DispatchActionクラスを拡張することで、単一のアクションクラスに複数のメソッドを記述できるため、メソッドへのリクエストがいくつあっても、オブジェクトは1つだけ作成され、すべてのインスタンスメンバーが共有されます。

しかし、Struts2には、複数のメソッドを作成する機能があります。
struts2では、リクエストごとに新しいインスタンスが作成されます。それでは、単一のActionクラスに複数のメソッドを記述することの使用法は何ですか?
さらに、各メソッドには複数のインスタンスメンバーが含まれる場合があります。それらを組み合わせて単一のオブジェクトを作成すると、オブジェクトを作成するたびに非常に多くのメモリが必要になります
。 Struts2.x ???

4

2 に答える 2

2

Struts1 と Struts2 は、設計方法とアクション クラスの記述方法がまったく異なります。

アクションは基本的に、一連の関連操作に対するユーザー アクションを表します。これは、アプリケーションを適切にモジュール化するための機能です。ただし、アクション クラスでは単一のメソッドのみを自由に定義できますが、アクション クラスの目的に反することになると思います。良い方法です。

たとえば、以下を含むユーザー管理の機能を開発したいとします。

  1. ユーザー登録。
  2. ユーザー更新
  3. その他のユーザー機能。

よく見ると、ユーザーに関連するプロパティを保持するために 1 つの User Bean を作成します。次に、ActionClasses の設計を考える必要があります。UserManagementAction次のようなメソッドで作成します

  1. ユーザーを作成
  2. 更新ユーザー
  3. 他のそのような方法

私の意見では、このようなアプローチはユーザー管理システムを集中化します。これらのメソッドはすべてユーザー管理機能に関連しているためです。また、アクション クラスのすべてのコンポーネントは、ユーザー Bean、ユーザー サービスなど、ユーザーに固有であり、使用されるため、使用できます。すべてのメソッド呼び出しで。

一方、2番目のアプローチでは、次のような機能ごとにアクションを作成するなどの1つの選択肢が残されます

  1. ユーザー登録アクション
  2. UpdateUserAction

そして、これらのすべてのアクションで、非常に多くのアクションといくつかの不要な構成を持つという苦痛以外に、ビジネス DTO のサービス クラスとその他のユーティリティ メソッドのほとんどを複製しています。

つまり、アプリケーションをどのように、どのように設計および開発するかという設計上の決定です。

于 2012-08-13T05:09:40.263 に答える
1

struts1 アクション クラスでも struts2 で複数のメソッドを許可する理由は、オブジェクトの作成 (Action クラス) とは関係ありません。その理由は、開発者が単一のクラスで同様のアクションを実行するアクションをグループ化できるようにするためです。たとえば、あるエンティティが を持っている場合、または製品を使用productすることができます。コードを整理するために、これらのアクションを 1 つのアクション クラスに含めるとすっきりします。したがって、リクエストごとにアクション クラスのインスタンスが作成され、リクエストの処理後に破棄されます。createmodifyremovecreate, modify and remove

于 2012-08-13T04:40:12.977 に答える