Sessionの開始と終了
        
             Sessionは、WebサーバーとWebクライアントの間で確立されます。Sessionを使うことで複数の要求に対するデータを保管することができます。Sessionはクライアントから最初の要求があった時に確立されます。そして、次のいずれかでSessionが切断されます。
        
        
            - 一定時間が経過したとき
 
            - クライアントでWebブラウザーを閉じたとき
 
            - 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メソッドを追加して、次のようにプログラムを入力してください。
        
        
            
                - package test.servlet;
 
                 
                - import java.io.IOException;
 
                - import java.io.PrintWriter;
 
                 
                - import javax.servlet.ServletException;
 
                - import javax.servlet.http.HttpServlet;
 
                - import javax.servlet.http.HttpServletRequest;
 
                - import javax.servlet.http.HttpServletResponse;
 
                - import javax.servlet.http.HttpSession;
 
                 
                - public class SessionTest extends HttpServlet {
 
                 
                -  @Override
 
                -  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 
                -   //クライアントに出力する準備する
 
                -   resp.setContentType("text/html; charset=utf-8");
 
                -   PrintWriter pw = resp.getWriter();
 
                 
                -   //Sessionオブジェクトを取得する
 
                -   HttpSession hs = req.getSession();
 
                 
                -   //Sessionにデータをセット
 
                -   hs.setAttribute("data", "Sessionを使ってデータを渡す");
 
                 
                -   //クライアントにHtmlタグを書き出し
 
                -   pw.println("<html>");
 
                -   pw.println("<head>");
 
                -   pw.println("<title>Sessionテスト</title>");
 
                -   pw.println("</head>");
 
                -   pw.println("<body>");
 
                -   pw.println("  <a href=\"SessionTest.jsp\">次のページへ</a>");
 
                -   pw.println("</body>");
 
                -   pw.println("</html>");
 
                -  }
 
                 
                - }
 
            
         
        
            〇 Webアプリケーション設定ファイルの編集
        
	
        
             web.xmlに次の内容を追加してください。
        
        
            
                - <?xml version="1.0" encoding="UTF-8"?>
 
                - <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 
                -   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
                -   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
 
                -   http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 
                -   version="3.1">
 
            
            (そのほかの記述…)
            
                -  <servlet>
 
                -   <servlet-name>SessionTest</servlet-name>
 
                -   <servlet-class>test.servlet.SessionTest</servlet-class>
 
                -  </servlet>
 
                 
                -  <servlet-mapping>
 
                -   <servlet-name>SessionTest</servlet-name>
 
                -   <url-pattern>/sessiontest</url-pattern>
 
                -  </servlet-mapping>
 
            
         	
        
            ○ ファイル
        
        
             結果を表示するJSPファイルを作成します。プロジェクトに次のようなファイルを追加してください。
        
        
        
            サンプルダウンロード
        
        
            ○ プログラム
        
        
             次のようにプログラムを入力してください。
        
        
            
                - <%@ page language="java" contentType="text/html; charset=UTF-8"
 
                - pageEncoding="UTF-8"%>
 
                - <%
 
                - //Sessionオブジェクトを取得
 
                - HttpSession hs = request.getSession();
 
                - %>
 
                - <!DOCTYPE html PUBLIC "-//W3C//DTD Html 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
                - <html>
 
                - <head>
 
                - <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
                - <title>Sessionデーデータを受信</title>
 
                - </head>
 
                - <body>
 
                -  <%= hs.getAttribute("data") %>
 
                - </body>
 
                - </html>
 
            
         
        
            ○ 実行結果
        
        
            http://localhost:8080/WebApp/sessiontest
        
        
            
                
            
            
            実行結果
        
        
            ○ 解説
        
        
             SessionTest.javaの21行目でSessionオブジェクトを取得しています。そして24行目でSessionオブジェクトのsetAttributeメソッドを使ってSessionにデータを保存しています。保存する際、キー名とデータを引数に指定します。
        
        
             SessionTest.jspの5行目でSessionオブジェクトを取得しています。そして15行目でgetAttribute()メソッドを使ってSessionのデータを取得しています。取得する際、保存時に指定したキー名を指定します。
        
        
            
            
            
            
        
        
        
            前へ   次へ