タイトルは少し曖昧に聞こえるかもしれませんが、やってみます。私は2つのサーブレットを持っています:
Action class
を拡張し、index.jsp
での入力に基づいてページを成功または失敗に転送しますActionForm class
を拡張し、ゲッターとセッターのメソッドを持ちます私は3つのjspファイルを持っています:
私は2つのxmlファイルを持っています:
Web.xmlがどのように機能するかを理解しています。私の唯一の疑問は、どれが、 one.Java /two.Java struts.xmlから最初に呼び出されますか?
デバッグを試みたところ、最初にActionForm
クラス、つまりtwo.Java
が呼び出され、次に値がAction
i.e one.Java
に返されることがわかりました。
しかし、Actionクラスが最初に実行され、次にアクションフォームが実行されることになっているのではないでしょうか。つまり、これがMVCアーキテクチャが従うものです。
説明してください。非常に詳細なワークフローへのリンクは非常に役立ちます。
ActionForm
クラスがAction
の前に呼び出されることは驚くべきことではありません-Strutsアクションメソッドを呼び出す前に、Strutsフォームにユーザーのデータを入力する必要があります。Strutsアクションメソッドには次の4つのパラメーターがあります。
ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response
2番目の-ActionForm
-は、最も遠いデータ処理を可能にする準備ができている必要があります。私はちょうど見つけました 素晴らしいシーケンス図 すべてのStrutsライフサイクルステージを説明するために:
要するに:
RequestProcessor
を呼び出し、struts-config.xmlを使用して適切なアクションとフォームを見つけます。RequestProcessor
はStrutsフォームオブジェクトを取得し(または存在しない場合は作成し)、リクエストからデータを入力し、検証を開始し(存在する場合)、適切なStrutsアクションを呼び出します。