Javaサーブレットで、webを作成中です。jspで、表示前に条件が合わなかった場合、他のjspを表示する方法はどうするのでしょうか?

例えばa.jspをユーザーが指定した時、表示前に、なんとかスコープとかいう方法で、値Xが得られなかった場合b.jspを表示し、b.jspで、リストボックスでXの値を選んで、実行ボタンを押すと、a.jspが開かれ、a.jspは、Xの値を使ったデータで、リストボックスを表示させる、というようなことを行いたいのですが。参考になる点を教えてください。、

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2017/12/25 09:10:43
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4971ベストアンサー獲得回数2153

ポイント300pt

Servlet なら、RequestDispatcher の forward メソッドを使います。

    if (条件が合わない) {
        RequestDispatcher dispatcher = request.getRequestDispatcher("/b.jsp");
        dispatcher.forward(request, response);
    }

JSP でも、RequestDispatcher が使えますけど、forward ディレクティブというのもあります。

    <% if (条件が合わない) { %>
        <jsp:forward page="/b.jsp" />
    <% } %>
他2件のコメントを見る
id:a-kuma3

forward は同じアプリケーションの中でしか飛ばせなくて、URL に指定するのはコンテキストルートから下になります。
別のアプリケーションのページに飛ばしたいのであれば、リダイレクトを使うと良いでしょう。

    <% if (条件が合わない) {
        response.sendRedirect("http://(hostname)/menu/menu_List.jsp");
    } %>
2017/12/21 14:58:40
id:kojiro_i619

response.sendRedirect("http://localhost:8080/XXXXX/menu");
でうまくいきました。ありがとうございました。

2017/12/25 09:10:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません