0

私は netbeans ecommerce チュートリアルをフォローしており、複数の URL を処理するように設定した ControllerServlet を導入しました。

ただし、彼らがこれを行う方法は、基本的に大きなif then else if声明を出すことです。

    String userPath = request.getServletPath();

    // if category page is requested
    if (userPath.equals("/category")) {
        // TODO: Implement category request

    // if cart page is requested
    } else if (userPath.equals("/viewCart")) {
        // TODO: Implement cart page request

        userPath = "/cart";

    // if checkout page is requested
    } else if (userPath.equals("/checkout")) {
        // TODO: Implement checkout page request

    // if user switches language
    } else if (userPath.equals("/chooseLanguage")) {
        // TODO: Implement language request

    }

これは、単一のサーブレットで複数の URL を処理するための推奨される方法ですか? このアプローチは恐ろしく、管理が難しいようです。

それとも、これをきれいに処理する明らかな方法がありませんか?

4

2 に答える 2

1

StripesやSpringMVCなどのMVCフレームワークを使用する必要があります。これは、これを処理します(その他多数)。これらのフレームワークでは、特定のURLパターン(* .actionなど)へのすべてのリクエストをインターセプトするように単一のサーブレットを構成します。このサーブレットは、アノテーションや命名規則、構成に基づいて適切なアクションにディスパッチします。

于 2012-05-11T17:52:45.457 に答える
0

ServletFilterを使用し、次の方法で web.xml を構成して、クライアント要求を適切な宛先コントローラーにリダイレクトできます。

上記のコード スニペットとは異なるユーザー パスに対して変更を続けます。

このアプローチを使用すると、要件に基づいて複数の URL を同じ (または複数の) フィルターに送信できます。

<filter>
  <filter-name>My Filter</filter-name>
  <filter-class>com.project.my.MYclass</filter-class>
</filter>


<filter-mapping>
  <filter-name>My Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
于 2012-05-11T20:05:58.173 に答える