Sessionの開始と終了

Sessionは、WebサーバーとWebクライアントの間で確立されます。Sessionを使うことで複数の要求に対するデータを保管することができます。Sessionはクライアントから最初の要求があった時に確立されます。そして、次のいずれかでSessionが切断されます。

■ Sessionの開始

Sessionは最初の要求時に確立されます。またSessionは、クライアントごとに確立されます。確立されたSessionに対してデータを保存することができます。そのSessionを取得するにはHttpServletRequestインタフェースのgetSessionメソッドを利用します。

■ Sessionの終了

Sessionは一定の時間が経つと自動的に切断されます。一定の時間はweb.xmlで設定できます。

<session-config>
    <session-timeout>180</session-timeout>
</session-config>

また、SessionはHttpSessionクラスのinvalidateメソッドを利用して、任意に切断することができます。

○ ファイル

プロジェクトに次のようなServletを追加してください。

パッケージ名 test.servlet
クラス名 SessionTest
スーパークラス名 javax.servlet.http.HttpServlet

サンプルダウンロード

○ プログラム

doGetメソッドを追加して、次のようにプログラムを入力してください。

SessionTest.java

  1. package test.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import javax.servlet.http.HttpSession;
  10. @WebServlet("/sessiontest")
  11. public class SessionTest extends HttpServlet {
  12.     @Override
  13.     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  14.         //クライアントに出力する準備する
  15.         resp.setContentType("text/html; charset=utf-8");
  16.         PrintWriter pw = resp.getWriter();
  17.         
  18.         // Sessionオブジェクトを取得する
  19.         HttpSession hs = req.getSession();
  20.         
  21.         // Sessionにデータをセット
  22.         hs.setAttribute("data", " Sessionを使ってデータを渡す");
  23.         
  24.         //クライアントにHTMLタグを書き出し
  25.         pw.println("<html>");
  26.         pw.println("<head>");
  27.         pw.println("<title> Sessionテスト</title>");
  28.         pw.println("</head>");
  29.         pw.println("<body>");
  30.         pw.println(" <a href=\"SessionTest.jsp\">次のページへ</a>");
  31.         pw.println("</body>");
  32.         pw.println("</html>");
  33.     }
  34. }

○ ファイル

結果を表示するJSPファイルを作成します。プロジェクトに次のようなファイルを追加してください。

ファイル名 SessionTest.jsp

サンプルダウンロード

○ プログラム

次のようにプログラムを入力してください。

SessionTest.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <%
  4.     //Sessionオブジェクトを取得
  5.     HttpSession hs = request.getSession();
  6. %>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <meta charset="UTF-8">
  11. <title>Sessionデーデータを受信</title>
  12. </head>
  13. <body>
  14.     <%= hs.getAttribute("data") %>
  15. </body>
  16. </html>

○ 実行結果

次のURLを入力して実行してみましょう。

http://localhost:8080/WebApp/sessiontest

実行結果
実行結果

○ 解説

SessionTest.javaの23行目で、Sessionオブジェクトを取得しています。そして26行目で、SessionオブジェクトのsetAttributeメソッドを使ってSessionにデータを保存しています。保存する際、キー名とデータを引数に指定します。Sessionオブジェクトは、Sessionが持続している間サーバーに保持されます。setAttributeメソッドで保存したデータは、Sessionが持続している間利用することができます。

SessionTest.jspの5行目で、HttpRequestServletオブジェクトのgetSessionメソッドでSessionオブジェクトを取得しています。そして14行目でSessionオブジェクトのgetAttribute()メソッドを使ってSessionのデータを取得しています。取得する際、保存時に指定したキー名を指定します。

前へ   次へ