複数の JSP から構成されるアプリケーションを作成する場合があります。別のページを呼び出す JSP を記述する場合、呼び出し方法を制御するために次の 2 つの項目について決めておく必要があります。
このセクションの例では、JSP request
オブジェクトを使用して、複数の JSP で情報
を共有しています。request
オブジェクトは、情報が現在処理中の要求に対して
のみ重要で、要求の処理が終了したら保持する必要がない場合に使用します。後の
例では、要求の処理が完了した後でも情報を保持する必要がある場合に、JSP
session
オブジェクトと application
オブジェクトを使用して JSP 間で情報を
渡しています。
目的のページで実行が完了してから呼び出し側ページに制御を戻すには、
jsp:include
アクションを使用して、この呼び出しを行います。
目的のページに制御を渡した後に呼び出し側ページが終了した場合、目的のページ
から呼び出し側ページに制御が戻されることはありません。この場合、
jsp:forward
アクションを使用して呼び出しを行います。
この例は、前に示した "要求の処理と応答の生成"の例を修正したものです。この例では、入力残高が 100.00 ドル未満の場合に、example2.jsp
の JSP により jsp:include
アクションが使用されて example2a.jsp
が呼び出されます。example2.jsp
から example2a.jsp
にパラメータを渡すには、JSP request
オブジェクトを使用します。example2.jsp
は次のとおりです。
<html>
<head><title>Balance Exmaple</title></head> <body> <p> <h1> Do you have enough?</h1> <br> <%-- 要求オブジェクトからパラメータを取得します。--%> <% String firstName = request.getParameter("fName"); %> <% String balance = request.getParameter("bal"); %> <%-- bal パラメータを String から double に変換します。--%> <% double accountBalance = Double.valueOf(balance).doubleValue(); %> <%-- 出力結果 --%> Balance for <%=firstName %>:<%=accountBalance %> <br> <%-- 残高は十分にあるか? --%> <% if(accountBalance <= 100.00) { %> <% request.setAttribute("needsJob", "true"); %> <jsp:include page="example2b.jsp" flush="true"/> <% } %> </body> </html>
入力パラメータは request
オブジェクトから JSP example2a.jsp
に渡されます。このパラメータに従って、出力が条件付けられます。example2a.jsp
の内容は次のとおりです。
<html>
<body> <p> <%-- 要求オブジェクトからパラメータを取得します。--%> <% String jobStatus = (String) request.getAttribute("needsJob"); %> <%-- 残高は十分にあるか? --%> <% if("true".equals(jobStatus)) { %> You need a job.<br><br> <h2>Available positions include:</h2> Software Engineer<br> QA<br> Technical Writer<br> <% } %> </body> </html>