JSPでも、同一のWebブラウザからの複数回のリクエストを、同一のWebブラウザからのアクセスとして処理することができます。
サーブレットのセション管理の処理をJava言語の埋め込みとして、JSPに埋め込むことができます。また、JavaBeansを利用した方法でも実現できます。
<%@ page>タグのsession属性に"true"と、<jsp:useBean>タグのscope属性に"session"を指定します。JavaBeansの呼び出しについては、“7.3.1 ビジネスロジックの埋め込み”を参照してください。
セションはServletコンテナによりセションIDを使用して自動的に管理され、セションIDは、CookieまたはURLパラメタに埋め込まれます。URLパラメタを使用する場合は、リンク等を出力するロジックで、encodeURL メソッドを使用してください。
Webブラウザ、運用環境共にCookieを使用可能な場合はセションはCookieで管理されますが、encodeURLメソッドを使用することで、Cookieを使用可能でない場合でもセションを使用することができます。
注意
セションタイムアウトの発生後に処理を継続した場合、新規のセションが確立されます。
セションIDの一意性の範囲、桁数はServletサービスの実装により異なる可能性があります。セションIDをセション識別以外の目的で使用しないようにしてください。
Cookieによるセション管理はServletコンテナにより自動で行われます。
アプリケーションでセション管理用Cookieの追加などの操作は行わないでください。
セション継続やセキュリティ上の問題が発生する場合があります。
サンプル
セション管理にCookieを使用したセション管理を利用した簡単なサンプルを以下に示します。
本サンプルでは、1ページ目で設定した名前を2ページ目で表示しています。
sample1.jsp
<HTML> ・・・ <BODY> <FORM action="sample2.jsp"> <INPUT type="submit" value="NEXT"> </FORM> <%@ page ・・・ session="true"%> <jsp:useBean id="sample" scope="session" class="MyApp.AccessName"/> ・・・ <jsp:setProperty name="sample" property="name" param="username"/> ・・・
sample2.jsp
<HTML> ・・・ <BODY> <%@ page ・・・ session="true"%> <jsp:useBean id="sample" scope="session" class="MyApp.AccessName"/> ・・・ <jsp:getProperty name="sample" property="name"/> ・・・
AccessName.java
package MyApp; public class AccessName { ・・・ String name; public AccessName() { } public String getName() { return name; } public void setName(String inputname) { name = inputname; } }