7

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

  1. one.java:Action classでの入力に基づいて、ページの転送を成功または失敗に拡張します。index.jsp
  2. two.java:ActionForm class Has getters and setters メソッドを拡張します

私は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クラス ieが最初に呼び出され、次に値がietwo.javaに返されることがわかりました。Actionone.java

しかし、最初に Action クラスが実行され、次にアクション フォームが実行されるはずではありませんか? つまり、これは MVC アーキテクチャが従うものです。

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

4

1 に答える 1

14

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

ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response

2 つ目 - ActionForm- は、最も遠いデータ処理を許可する準備ができている必要があります。Struts ライフサイクルのすべての段階を説明する素晴らしいシーケンス図を見つけました。

ここに画像の説明を入力

要するに:

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