web-dev-qa-db-ja.com

Struts 1.2の制御フロー(ライフサイクル)

タイトルは少し曖昧に聞こえるかもしれませんが、やってみます。私は2つのサーブレットを持っています:

  1. one.Java:Action classを拡張し、index.jspでの入力に基づいてページを成功または失敗に転送します
  2. two.Java:ActionForm classを拡張し、ゲッターとセッターのメソッドを持ちます

私は3つのjspファイルを持っています:

  1. index.jsp:ウェルカムページであり、ユーザー名の組み合わせを要求します
  2. success.jsp:組み合わせが正しい場合に呼び出されます
  3. failure.jsp:組み合わせがfalseの場合に呼び出されます

私は2つのxmlファイルを持っています:

  1. web.xml: DD
  2. struts-config.xml: Struts構成ファイル

Web.xmlがどのように機能するかを理解しています。私の唯一の疑問は、どれが、 one.Java /two.Java struts.xmlから最初に呼び出されますか?

デバッグを試みたところ、最初にActionFormクラス、つまりtwo.Javaが呼び出され、次に値がActioni.e one.Javaに返されることがわかりました。

しかし、Actionクラスが最初に実行され、次にアクションフォームが実行されることになっているのではないでしょうか。つまり、これがMVCアーキテクチャが従うものです。

説明してください。非常に詳細なワークフローへのリンクは非常に役立ちます。

7
Punjan Sudhar

ActionFormクラスがActionの前に呼び出されることは驚くべきことではありません-Strutsアクションメソッドを呼び出す前に、Strutsフォームにユーザーのデータを入力する必要があります。Strutsアクションメソッドには次の4つのパラメーターがあります。

ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response

2番目の-ActionForm-は、最も遠いデータ処理を可能にする準備ができている必要があります。私はちょうど見つけました 素晴らしいシーケンス図 すべてのStrutsライフサイクルステージを説明するために:

enter image description here

要するに:

  1. クライアントのリクエストを受け取った後、StrutsフロントコントローラーはRequestProcessorを呼び出し、struts-config.xmlを使用して適切なアクションとフォームを見つけます。
  2. RequestProcessorはStrutsフォームオブジェクトを取得し(または存在しない場合は作成し)、リクエストからデータを入力し、検証を開始し(存在する場合)、適切なStrutsアクションを呼び出します。
  3. Strutsアクションは、さらに必要なすべての操作を実行します。
12
bsiamionau