5

これら 2 つのコード行の違いと、それぞれをいつ使用する必要があるのでしょうか?

1.

RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);

2.

RequestDispatcher view = getServletContext().getRequestDispatcher(“/result.jsp”);
4

1 に答える 1

5

1)RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);

ここ、

  • ビューは現在のリクエストに関連しています。jsp/html の相対パスを渡す必要があります
  • 同じ Web アプリケーションで 2 つのサーブレットをチェーンする場合。

Java docは言う、

現在のサーブレット コンテキストの外に拡張することはできませんが、指定されたパス名は相対パスにすることができます。パスが「/」で始まる場合、現在のコンテキスト ルートを基準として解釈されます。サーブレット コンテナが RequestDispatcher を返せない場合、このメソッドは null を返します。

このメソッドと ServletContext.getRequestDispatcher(java.lang.String) の違いは、このメソッドが相対パスを取ることができることです。

2) RequestDispatcher ビュー = getServletContext().getRequestDispatcher(“/result.jsp”);

ここ、

  • ビューはサーブレット コンテキストのルートに相対的です。jsp/html の絶対パスを渡す必要があります。
  • 同じ/異なるサーバーで2つのWebアプリケーションをチェーンするため。

Java docは言う、

パス名は「/」で始まる必要があり、現在のコンテキスト ルートを基準として解釈されます。getContext を使用して、外部コンテキストのリソースの RequestDispatcher を取得します。ServletContext が RequestDispatcher を返すことができない場合、このメソッドは null を返します。

于 2014-11-13T17:56:58.623 に答える