4

一般的な質問があります。リクエストを別のページにリダイレクトするために、サーブレットまたは送信ページ内に JavaScript を書いている人を見てきました。お気に入り

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SomeServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {  
out.println( "<script> location.replace('myPage.jsp'); </script>" );
  }
}

私の質問は、このように書くのは良い習慣ですか(そうではないと思います)?それが良い習慣ではない場合、これの欠点は何ですか?

4

2 に答える 2

3

次の理由から、これは本当に悪い習慣です。

  • クライアント (ブラウザ) は、リダイレクトが完了する前にページ全体をダウンロードする必要があります
  • これは、Javascript がオフになっているブラウザーでは機能しません。
  • これについてはよくわかりませんが、検索エンジンがこの手法で問題を起こす可能性があります

リダイレクトを送信するには、 を使用することをお勧めしますresponse.sendRedirect(...)。これは HTTP リダイレクト (ステータス コード 3xx) であり、Javascript を必要とせず、すべてのブラウザーで確実に機能します。

于 2013-02-08T06:21:37.773 に答える
1

それはプロのコーディング方法ではありません。

JSPの場合と同様に、またはから形成される最終ページServletに、(応答で送信される文字列として)配置するものをすべて配置できます。もちろん、サーブレットの場合は文字列のみになります。HTMLServletJSP

この文字列には、HTMLなどを配置できJavascript、ナビゲーターで機能しますが、Javaレベルでは文字列にすぎません。

その方法はありますが、ほとんどの場合は避けてください。

これを行うと、クライアント側のデバッグなどの問題が発生し、新しい開発者にとって、このスクリプトを追加する場所を正確に確認することがより複雑になります(スクリプトを文字列として含めることができるかどうかわからない場合servlet

于 2013-02-08T06:56:35.107 に答える