・通常は1ページ1セッション。
・複数のページを1セッションで扱いたい場合(ショッピングサイトなど)
HTTPの範囲では、扱うことができないため、JSPではクッキーを使用して複数ページにわたるセッションを管理する仕組みが準備されている。
例)
・セッション変数にユーザー名が格納されていればメッセージ表示+7-3.jspへのリンク
・ユーザー名が格納されていなければ、入力用のフォームを表示し、値を7-2.jspを渡す
<%@ page contentType="text/html; charset=euc-jp" %>
<%
// 内容: セッションを使用する
// セッション変数の取得
String userName = (String)session.getAttribute("name");
// 表示するメッセージ
String message = "";
if(userName == null) { // セッション変数 name を取得できなかった場合
message = "お名前を入力してください。<br>"
+ "<form action=\"7-2.jsp\">"
+ "<input type=\"text\" name=\"name\" size=16> "
+ "<input type=\"submit\" value=\"OK\">";
} else { // セッション変数 name を取得できた場合
message = "ようこそ <b>" + userName + "</b> さん。<br><br>"
+ "<a href=\"7-3.jsp\">セッションを終了する</a>";
}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>セッションを使用する</title></head>
<body>
<p>-- セッション変数の取得 --</p>
<p><%= message %></p>
<p>(sessionID=<%= session.getId() %>)</p>
</body>
</html>
セッションのの識別IDはgetId()メソッドで取得できる。
セッション変数の格納は
session.setAttribute("name", name);
セッションの開放は
session.invalidate();
sessionは、outと同じ暗黙オブジェクトの1つ
http://www.atmarkit.co.jp/fjava/rensai/jsp07/jsp07.html