(1). forward() メソッド javax.servlet.RequestDispatcherクラスを使いましょう RequestDispatcher rd = getServletContext().getRequestDispatcher("url"); rd.forward(requestVar, requestVar); サーブレットのエントリパラメータを渡します つまり: getServletContext().getRequestDispatcher("url").forward(requestVar,responseVar);
サーバーサイドサーブレットを回転させる方法は4つあります: 1. getRequestDispatcher() for ServletContext 2. getNamedDispatcher() for ServletContext 3. getRequestDispatcher() for ServletRequest 4. ServletResponseのsendredirect()によるステア。 前方法は、より効率的なためです。 前方メソッドが利用できない場合のみ、sendredirect()メソッドのサーブレットレスポンスを使いましょう。
(2).response.sendRedirect(url); 実際、ブラウザに特別なヘッダーを送信し、指定されたページに切り替えるため、sendRedirectを使うとアドレス変更がブラウザのアドレスバーに表示されます。 新しいページは古いページのpagecontext(request, response,...を処理できません。異議。 response.sendRedirect の後にリターンが続くべきです。
(3). HTML言語への自動ジャンプ <html> <head> <meta http-equiv="refresh" content="0;url="http://www.baidu.com"> 0は待ち時間で、5に設定するとジャンプは5秒待ってから始まることを意味します </head> …………
(4). JavaScriptジャンプ ある: <script languate="JavaScript"> window.location.replace("http://www.baidu.com"); </script> B: window.location属性に直接値を割り当てることもできます。window.location="url"で、これはAとは異なり、履歴があります C: <script languate="JavaScript"> document.location.href("http://www.google.com"); </script> ドキュメントの場合、ロケーションはオブジェクトではありません。document.location=document.url D:historyオブジェクトのforward()、back()、go()メソッドはシェーピングエントリパラメータを必要とします <a href="javascript:history.go(-1)" >前のステップに戻</a>る <a href="javascript:history.back()"に相当>前のステップに戻</a>る E: document.formName.action="test.jsp"; document.formName.submit(); JSコミットメソッド 最初のタイプ: <スクリプト言語="javascript" タイプ="text/javascript"> window.location.href="login.jsp?backurl="+window.location.href; </script> 第二のタイプ: <スクリプト言語="JavaScript"> alert(「返す」); window.history.back(-1); </script> 三つ目のタイプ: <スクリプト言語="JavaScript"> window.navigate("top.jsp"); </script> 4つ目のタイプ: <script language="JavaScript"> self.location='top.htm'; </script> 第五のタイプ: <スクリプト言語="JavaScript"> 警告(「違法アクセス!」) ); top.location='xx.jsp'; </script>
(5). <jsp:forward page="nextpage.jsp"/> として: <jsp:forward page="/servlet/login" /> <jsp:forward page="/servlet/login"> <jsp:param name="username" value="jsmith" /> </jsp:forward> <jsp:forward>タグは、ユーザーリクエストを含むリクエストオブジェクトを、あるJSPファイルから別のファイルへ渡します。 <jsp:forward>tagは実行されません。 <jsp:param>タグを使ってパラメータや値をオブジェクトファイルに転送できます。オブジェクトファイルはパラメータを扱える動的ファイルでなければなりません。 バッファなし出力を使う場合は<jsp:forward>を使う際は注意してください。 もしjspファイルに<jsp:forward>を使う前にすでにデータがあるなら、ファイルの実行は間違っています。 JSPページジャンプメソッドのコレクション 1. response.sendRedirct("ページへジャンプ"); このメソッドはHTTPプロトコルのHEADER部分を修正し、リダイレクトコマンドをブラウザに発行し、リダイレクトウェブページの内容を表示させます。 リクエストは値をパスパスすることはできません。 ページにジャンプする前に、ページ上のすべてのコードを実行してください。 住所バーに移動して変更してください。 別のサーバーのanswer.sendRedirct(http://www.sun.com)ページにジャンプできます。 2.response.setHeader(); このメソッドはresponse.sendRedirectと同様に、HTTPプロトコルのヘッダー部分を修正することで行われます。 <% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); ストリング newLocn="/index.html"; response.setHeader("Location", newLocn); % > 3.<jsp:forward page="jump page"/> この方法は、サーバーがまずバッファにデータを出力し、その後クライアントにバッファの内容を送る仕組みを利用します。元の方は送信せず、ページの内容を送ります。<jsp:forward>前に多くの出力がある場合、前の出力でバッファが満杯になり、自動的にクライアントに出力され、その文は動作しません。特に注意が必要です。 リクエストは値をパスパスできます。 ページに直接ジャンプすると、以下のコードは実行されません。 ジャンプ後もアドレスバーは変わりません。 別のサーバーのページにジャンプできません。 画像は表示できない絶対的な経路ではありません。 4. request.getRequestDispatcher("ページにジャンプ"); リクエストは値をパスパスできます。 ページにジャンプする前に、ページ上のすべてのコードを実行してください。 ジャンプアドレスバーは変更されていません。 別のサーバーのページにジャンプすることはできません <% RequestDispatcher rd = request.getRequestDispatcher("to.jsp"); rd.forward(request, response); %> 出力をリダイレクトする方法は3つあります:RESPONSE。 SETREDERECT("URL")このメソッドは、HTTPプロトコルのHEADER部分を修正し、リダイレクトされたウェブページの内容をブラウザに表示させるためのリダイレクトコマンドを発行します。 response.sendRedirect("http://localhost:7001/index.html"); 以下のメソッドはHTTP HEADERプロパティも変更でき、これは1と同じ動作です。 <%response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); 文字列 newLocn="/index.html"; response.setHeader("Location", newLocn); % > < JSP:FORWORD >が採用されました この方法は、サーバーがまずバッファにデータを出力し、その後クライアントにバッファ内容を送信する仕組みを利用します。元のバッファは送信せず、代わりにページの内容を送ります。もし<JSP:FORWORD>までに多くの出力がある場合、前の出力がバッファを埋めて自動的にクライアントに出力され、その文は機能しなくなります。特に注意が必要です。 1つのJSPページ内に別のJSPページをネストする方法は3つあります。 1. <%@ include file="header.jsp"%>この方法は静的なページ読み込みのみを実現でき、プロジェクト内の一般的なページヘッダー header.jspとfooter.jspの読み込みを実現するのに最も一般的に使われます。 2. include page="tt.jsp"%<%>このメソッドは動的なページ読み込みを実現できますが、ページへのパラメータ渡しが必要です。 3. <iframe src="jspのpath" >(インラインフレームワーク)で、別のJSPページをページにロードします。 パラメータを渡すためにforwardを使う場合は、次のように書いてください:<%String str="You are loged in!"; %> <jsp:forward page="index.jsp> <jsp:param name="name" value= <%=str%>/> </jsp:forward> |