複数の 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>