web-dev-qa-db-ja.com

JSPでページをリダイレクトしますか?

Jspでいくつかのページを設計する必要があります。最初のページで送信ボタンをクリックすると、ページは自動的に2番目のページにリダイレクトされます。

簡単な例や、これを実装する方法を示すチュートリアルへのリンクを手伝ってもらえますか?

41
PROXY
<%
    String redirectURL = "http://whatever.com/myJSPFile.jsp";
    response.sendRedirect(redirectURL);
%>
105
oopbase

この回答 には、jstlリダイレクトタグのみを使用した標準ソリューションも含まれています。

<c:redirect url="/home.html"/>
25
SpaceTrucker

送信ボタンを含む<form>action属性でターゲットページを定義するだけです。

したがって、page1.jsp

<form action="page2.jsp">
    <input type="submit">
</form>

問題とは無関係に、JSPは not であり、必要な場合はビジネスに最適です。 servlets を学習することを検討してください。

7
BalusC

Hello there:リンクのリダイレクト先をさらに制御する必要がある場合は、このソリューションを使用できます。

すなわち。ユーザーがCHECKOUTリンクをクリックしているが、ユーザーをcheckoutに送信したい場合登録されている場合は(ログイン)ページ、または登録されていない場合は登録ページ。

JSTL core LIKE:を使用できます

<!--include the library-->
<%@ taglib prefix="core" uri="http://Java.Sun.com/jsp/jstl/core" %>

<%--create a var to store link--%>
<core:set var="linkToRedirect">
  <%--test the condition you need--%>
  <core:choose>
    <core:when test="${USER IS REGISTER}">
      checkout.jsp
    </core:when>
    <core:otherwise>
      registration.jsp
    </core:otherwise>
  </core:choose>
</core:set>

EXPLAINING:と同じ...

 //pseudo code
 if(condition == true)
   set linkToRedirect = checkout.jsp
 else
   set linkToRedirect = registration.jsp

次に:単純なHTMLで...

<a href="your.domain.com/${linkToRedirect}">CHECKOUT</a>
2
T04435

return;ステートメントで@oopbaseの答えを拡張します。

ログイン情報をsessionに保存する従来の認証システムのユースケースを考えてみましょう。各ページで、アクティブなセッションを確認します

/* Some Import Statements here. */

if(null == session || !session.getAttribute("is_login").equals("1")) {
    response.sendRedirect("http://domain.com/login");
}

// ....

session.getAttribute("user_id");

// ....
/* Some More JSP+Java+HTML code here */

しかし、それは一見したところ見た目は問題ありません。問題が1つあります。制限時間のためにサーバーのセッションが期限切れになり、ユーザーがページにアクセスしようとすると、コードをtry..catchブロックに記述していないか、_if(null != session.getAttribute("attr_name"))を毎回処理していない場合、エラーが発生する可能性があります。

return;ステートメントを追加することにより、Iは実行を停止し、ページを特定の場所にリダイレクトしました。

if(null == session || !session.getAttribute("is_login").equals("1")) {
    response.sendRedirect("http://domain.com/login");
    return;
}

リダイレクトの使用は、要件に応じて異なる場合があることに注意してください。今日、人々はそのような認証システムを使用していません。 (最新のアプローチ- トークンベースの認証 )これは、リダイレクトの場所と方法を理解するための単なる簡単な例です。

1
Hardik Thaker