0

私のすべての Js と css は script.jsp ファイルにあり、すべてのページに含まれています

<jsp:include page="../include/scripts.jsp" />

ページを送信/更新すると、何度もリロードされますか?

これを制御する方法は?

4

2 に答える 2

0

現在使用しているタグ<%@ include/>に対してinclude ディレクティブを使用します。<jsp:include/>

<jsp:include/>コンパイラがそのタグに遭遇するたびに(最初のリクエスト、更新)、含まれているリソースをフェッチするようにjspランタイムに指示しますが<@ include/>、含まれているリソースがコンパイル時に親リソースに組み込まれることを意味します

違いは、ディレクティブがコンパイル時のインクルードであることです。これは、ディレクティブの内容 (あなたの場合はscripts.jsp ) が親 jsp (そして最終的には jsp がコンパイルされるサーブレット) に焼き付けられることを意味します。その結果、インクルードされたファイルは、親 jsp が最初にレンダリングされるときにのみ読み取られます。

あなたが持っているべきもの:

    <%@ include page="../include/scripts.jsp" />

関連している:

于 2013-06-02T16:29:02.253 に答える
0

これを説明できる説明を見つけました。必要なときに助かりました

ここに問題の説明があります...

フォームの「送信」ボタンをクリックすると、フォームに入力されたすべてのデータを含むリクエストが Web サーバーに送信されます。URL だけでなくフォーム データもリクエストの一部であり、このリクエストはブラウザによって記憶されます。ユーザーが「更新」をクリックすると、ブラウザーは要求を繰り返し、同じ URL とフォーム データを Web サーバーに再度送信します。

ただし、フォームは、「form」タグの「method」属性に応じて、GET または POST の 2 つの異なる方法で送信できます。GET リクエストには副作用がないという規則があります。データを取得するだけで、データベースに変更を加えることはありません。一方、リクエストがデータを変更する場合は、常に POST リクエストを使用する必要があります。前述したように、これらは慣習に過ぎず、技術的な違いはあまりありませんが、非常に重要な違いは、ユーザーが POST を繰り返そうとするとブラウザが警告を発することです。[更新] をクリックすると、ダイアログ ボックスが表示されます。これにより操作が繰り返される可能性があることをユーザーに警告し、ユーザーが本当に再送信したいことを確認します。ブラウザは、GET リクエストを更新するときにこの確認を表示しません。

GET メソッドを使用してフォームを POST に変更するのが最も簡単な解決策です。これは、少なくともユーザーが更新しようとすると警告されることを意味するためです。

しかし、より良い解決策は、@cletus によって提案された POST+REDIRECT+GET イディオムです。これにより、データベースの更新 (POST) とビュー (GET) が 2 つの操作に分割されます。ブラウザで更新をクリックすると、GET が繰り返されるだけで、副作用はありません。

于 2013-06-01T18:02:37.153 に答える