1

JavaアプリケーションでMVCパターンの使用を始めたばかりです。私は以前にCodeIgniterでMVCを少し使用していましたが、正しく機能することを確認したいと思います。

  • ビューはGUIファイルであり、コントローラーに入力を送信します。

  • 次に、コントローラーはこれらの入力を受け取り、最終的にモデルに送信します。

私のCodeIgniterアプリケーションでは、モデルを使用したのはデータベース関連のものだけでした。たとえば、電子メールを検証する必要がある場合、コントローラーまたはモデルで検証する必要がありますか?

4

3 に答える 3

3

検証をどこで行うかは、MVCパターンでまだ議論の余地がある質問です。

いくつかの簡単な検証は、ビューで実行でき、実行する必要があります。例:数値を受け取るテキスト入力ウィジェットは、ユーザーが文字を入力することさえ許可してはなりません。そのためにコントローラーやモデルに相談する必要はありません。

何が有効で何が無効であるかを決定することはビジネスロジックの一部であるため、モデルにゴミが入らないようにするのはコントローラーの仕事であると言う人もいます。

独自の一貫性を確保するのはモデルの仕事であると言う人もいるので、コントローラーからのすべてを検証し、ガベージデータを拒否する必要があります。

tl; dr:状況によります。

于 2013-02-15T09:52:10.610 に答える
1

クライアント側の検証をビューに組み込む必要がありますが、サーバー側の検証は、あなたのようなシナリオに関するものであり、コントローラーがジョブに最適です。モデルは、一部のビジネスロジックとデータベースプロセスを実行するためにのみ使用する必要があります。

于 2013-02-15T09:55:38.743 に答える
0

MVCモデルから

  • ビューは、アプリと外部の間のインターフェース/エンドポイントとして機能します。ほとんどの場合、それはある種のGUIです。
  • コントローラーはディスパッチング部分を表し、かなり軽量に保つ必要があります
  • モデルはビジネスロジックを扱い、DBと通信します。

メールの検証に関する質問については、JavaScriptを介したView / GUIの2つの場所で行う必要があります。これにより、ユーザーが不正なメールアドレスを入力した場合に迅速かつ適切なフィードバックを確保し、無駄なヒットを回避できます。ただし、これとは別に、サーバー側のどこかで実行する必要があります。このための実際のロジックは、モデルレイヤーにあります。これは、ブール値を返し、モデルのどこかで宣言され、コントローラーから呼び出されるisValidEmail(String emailAddress)のようなメソッドです。私は次のようなことを考えていました。

    public void myAction() {
       //we are in the controller
       if(!Manager.isValidEmail(emailAddressAsString)) {
          dispatchBadEmailView(); //dispatch to a bad email address view
       }
    }

これは私の意見です。まだ使用していない場合は、Spring MVCなどを使用してみてください。これは非常に役立ちます。詳細については、http ://www.mkyong.com/tutorials/spring-mvc-tutorials/を参照してください。

于 2013-02-15T09:55:31.360 に答える