web-dev-qa-db-ja.com

ストラットの基本的な流れ

さて、Strutsを勉強したいので、Struts 1から始めて、一般的な流れを知りたいと思います。どのファイルが必要ですか?

Struts-config.xmlの機能は何ですか? validate.xml? validate-rules.xml JSPページにアクセスし、アクションが実行されると、どうなりますか? ActionクラスとFormクラスは何をしますか?アクションが発生したときに最初に呼び出されるクラス。

サンプルフォームをダウンロードしたところ、これらのファイルはすべて最初は混乱します。 Strutsのより良いアイデアを得るために何が起こっているのか知りたいです。

12
user478636

Strutsのチュートリアルから始める必要があります。これにより、:Dを簡単に理解できるようになります。特にStruts1の場合は、Web上でたくさん見つけることができます。 たとえば、ここから開始点があります

しかし、それのためだけに、ここにハイビュープレゼンテーションがあります。

まず、Struts ActionServlet を_web.xml_ファイルに追加し、特定のマッピングに一致するリクエストを受け入れるように構成します。 Strutsの場合、これは_*.do_です(これには何でも使用できます。_*.do_はStrutsコミュニティの単なる慣例です)。

これで、そのような_*.do_ URLパターンでサーバーに到着したものはすべて、ActionServletに送信されます。

これで、_struts-config.xml_ファイルのコンテンツが機能します。 ActionServletフロントコントローラー であり、特定の処理のために他のより適切なリソースにディスパッチするだけです。それらの特定のリソースは Action クラスです。

たとえば、_login.do_パスに到着するリクエストを処理する必要があるLoginActionを持つことができます。 _struts-config.xml_で、これを指定します。loginパスにあるすべてのものをLoginActionクラスに送信する必要があります。

また、パスx call XActiony call YActionなど、必要な数の宣言を含めることができます。

通常、クライアントはデータをサーバーに送信します。データは、HTMLフォームに入力します。 Actionクラスで処理する必要があるこのデータ。ここで ActionForm と入力します。

ActionFormは、StrutsフレームワークがHTMLフォームからのデータで埋めるBeanです。 request.getParameter("foo")を実行する代わりに、たとえばformBean.getFoo()のようなオブジェクトを操作できます。

Actionを使用してActionFormクラスで処理を行ったら、結果を何らかのビューで表示する必要があります(ちなみに、Strutsは [〜#〜] mvcです) [〜#〜] フレームワークなので、これについても1つか2つ知っておく必要があります)。

通常、ビューはJSPファイルです。 Actionから戻るときは、名前で「転送」場所を指定します(つまり、どのビューに移動するか)。ここでも、情報は_struts-config.xml_ファイルにあり、ビューの名前がJSPの場所にマップされています。

次に、フレームワークはそのJSPに制御を転送し、JSPはデータを提示してHTMLとしてクライアントに送信します(クライアントはJSPに直接アクセスする必要がなくなります。Strutsフレームワークによって非表示にする必要があります)。

新しいページで、クライアントは再びいくつかの要求を実行し、プロセスが繰り返されます。

まあ、それはそれが得ることができるのと同じくらい高いプレゼンテーションです。もちろんこれ以上のものがありますが、Strutsについて学びながらそれらを発見するでしょう。

_validator-rules.xml_と_validation.xml_は、プラグイン(Struts)を使用して Validator フレームワークで使用されます Strutsと統合 新しいものを追加するために使用できるプラグインがあります)また、ユーザーの入力に検証を追加します。

まあ、それはそれについてです。詳細を提供するチュートリアルはWeb上にたくさんありますが、より良いスタートを切るのに役立つことを願っています。

幸運を!

33
user159088
  1. ユーザーがjspページを送信したとき。 (の属性)_action="login.do"_を持つそのページ。コンテナは_web.xml_を呼び出します。その_web.xml_には、サーブレットとサーブレットマッピングの2つのセクションがあります。
  2. サーブレットマッピングでは、urlパターンで_*.do_が見つかります。サーブレットの名前をとることがわかった場合。対応するクラスを確認してください。サーブレットセクション。そのクラスはActionServletです。
  3. ActionServletは、Strutsモジュールアーキテクチャのコントローラーです。サービスメソッドを持つ動作中のサーブレット。そのメソッドで、RequestPrecessorクラスインスタンスを作成します
  4. Service(req,res) RequestPrecessor rp = new RequestPrecessor();
  5. インスタンスrp.process(req,res)を介してRequestProcessorクラスのプロセスメソッドを呼び出します。
  6. リクエストプロセッサクラスには、パラメータreq、resのプロセスメソッドがあります。このクラスのif条件は1です。その条件は常に真を返します。それはダミーの方法だからです。

その状態の中で6つのステップが処理されています

  1. _Struts- Config.xml_にアクションマッピングインスタンスを作成します。アクションマッピングパス、値、タイプフォワード、_validation=true/false_、_input ="*.jsp"_などのすべての詳細をこれらのrが作成したインスタンスに保持します
  2. 次に、アクションマッピングの名前とフォーム名が一致するかどうかを確認する前に、フォームクラスインスタンスを作成します。同じである場合は、フォームインスタンスを作成します。
  3. 次に、ActionMappingインスタンスに移動します。risが言及しているかどうかは_validate =true/false_です。falseの場合、このステップは実行されません。それ以外の場合は、このステップが実行されます。
  4. 次に、アクションインスタンスを作成します
  5. 次に、executeメソッドの4つのパラメーターを取り、ActionErrorsインスタンスを返します。空でない場合。エラーページに移動します。それ以外の場合は、対応するページに移動します。それ以外の場合、空の場合はさらに進んで、対応するページの値をjspビューに表示します。これはStrutsフローです。
8
Anand Perumal