7

私は実際にサーブレットに関するチュートリアルを読み、サーブレットにjavascriptを含める2つの異なる方法を見ました。

  out.println("<html><head>");

  RequestDispatcher dispatcher = request.getRequestDispatcher(
      "/WEB-INF/javascript/functions.js");

  dispatcher.include(request, response);

  out.println("<title>Client Forms</title></head><body>");

およびその他の可能性:

out.println("<html><head>");
out.println("<script language="text/javascript" src="functions.js">");
...

ディスパッチャを使用することと直接含めることの違いは何ですか?より良い解決策は何ですか?

あなたのアドバイスのためのthx..

4

2 に答える 2

5
<script language="text/javascript" src="functions.js">

この場合、ブラウザはスクリプトをキャッシュする可能性があり、コンテンツが変更されていない場合、次のページの読み込み時に読み込まれません。リソースをキャッシュすると、ページの読み込みとネットワークトラフィックの時間を節約できます。このスニペットをサーブレットとjspのどちらで使用するかは関係ありません。

ちなみに、スクリプトを含める最初の方法にはバグがあります。* .jsファイルには通常、マークアップなしでjavascriptコードのみが含まれているため、functions.jsのコンテンツを含める前に開始スクリプトタグを追加し、後に終了スクリプトタグを追加する必要があります。

out.println("<script type='text/javascript'>");
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/javascript/functions.js");
out.println("</script>");
于 2012-10-29T15:19:05.667 に答える
4

を使用する場合、RequestDispatcher実際にはサーバーから上記のJSファイルを要求し、それを応答ドキュメントに埋め込みます。

一方、タグを埋め込むと、ブラウザはサーバーに対してそのようなリクエストを行うようになります。少なくともファイルが別のサーバーにある場合は、どちらのアプローチでも99%の時間で同じ結果が得られると思います。

一方、同じサーバー上にある場合は、RequestDispatcherの方が高速になると思います。

サーバー側のキャッシュは、最初のアプローチとクライアント側のアプローチに役立ちます。

于 2012-10-29T15:23:19.933 に答える