////////////////////////////////////////////////////////////////////////////////
//  << sv142.java >>
//
// サーブレット(4):セッション管理(応用:アクセスカウンタ)
//
//  Webクライアントからアクセスがあるごとに、アクセス回数と前回アクセス時刻を
//  表示する。
//  Webブラウザの更新をクリックすると、アクセス回数とアクセス時刻が変わる。
//  Webブラウザを閉じると、アクセス回数は、0にリセットされる。
//
// ●セッション管理
//  セッションに、属性とその値を設定することができる。
//
// ●HttpSessionインターフェースのメソッド
//    public Object getAttribute(String s)
//   機能:属性sに対応づけられたオブジェクトを返す。
//      オブジェクトがない場合は、null を返す。
//    public void setAttribute(String s, Object obj)
//   機能:属性sにオブジェクトobjを対応づけ、このセッションに関連づける。
//      同じ属性sにオブジェクトがすでに対応づけられている場合、
//      置き換えられる。
//
// ●起動法
//  (1)Javaファイル(sv142.java)をコンパイルし、classファイル(sv142.class)を
//       作成する。
//       ただし、Javaファイル(sv142.java)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv142.java
//     classファイル(sv142.class)は、
//       %CATALINA_HOME%\webapps\SV\WEB-INF\classes\sv142.class
//       に保存する。
//    (2)入力フォームで、
//         URL(http://localhost:8080/SV/servlet/sv142)
//       を指定する。
//
////////////////////////////////////////////////////////////////////////////////

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Date;

public class sv142 extends HttpServlet {
  public void doPost(HttpServletRequest request, HttpServletResponse response)
                     throws ServletException,IOException {

    // セッションオブジェクトの取得。
    HttpSession hs = request.getSession(true);

    // sessionIDの取得。
    String sid = hs.getId();

    // セッションに保存されている属性(COUNT)の値を取得。
    // 属性(COUNT)は、アクセス回数を意味する。
    Integer c = (Integer)hs.getAttribute("COUNT");

    // セッションに保存されている属性(DATE)の値を取得。
    // 属性(DATE)は、アクセス時刻を意味する。
    Date time = (Date)hs.getAttribute("DATE");

    // アクセス回数の更新。
    int n;
    if( c == null ) { // 最初の処理。
      n = 1;
    } else {
      n = c.intValue() + 1;
    }

    // セッションの属性に値を設定する。
    hs.setAttribute("COUNT",new Integer(n));
    hs.setAttribute("DATE",new Date());

    // コンテンツタイプの指定。
    response.setContentType("text/html; charset=Shift_JIS");

    // HTML文書の出力。
    PrintWriter pw = response.getWriter();
    pw.println("<html>"                                    
             + "<head><title>サーブレット</title></head>"  
             + "<body>"                                    
             + "セッション<br>"
             + "現在のsessionID: " + sid + "<br>"
             + n + "回目のアクセスですね<br>"
             + "前回のアクセス時刻: " + time + "<br>"
             + "</body>"                                   
             + "</html>");                                 
    pw.flush();
    pw.close();
  }
}
入力フォーム
<form action=http://localhost:8080/SV/servlet/sv142 method=POST>
  <input type=submit value=実行>
</form>
実行結果

実行後


更新をクリック後


Webブラウザを閉じ、再度開いた後