package session; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /* * ブラウザが閉じても、セッションを継続させるサンプル */ public class CounterServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 初回起動時、セッションがにい場合は、セッションメモリを生成 // 2回目以降の呼び出し時は既存セッションの取得 HttpSession session = request.getSession(); // セッションから、アクセス回数を保存する整数オブジェクトの取得 // 初回起動時は当然、整数オブジェクトのセッションへの属性登録はないので、戻り値はnullになる Integer count = (Integer) session.getAttribute("count"); // 初回起動時のみ、アクセス回数0で初期化した整数オブジェクトを用意する if (count == null) { count = new Integer(0); } // カウンタを +1 count = new Integer(count.intValue() + 1); // セッションにオブジェクトの格納 session.setAttribute("count", count); // ★:::::::::::::::::::::::: Cookie cookie = new Cookie("JSESSIONID", session.getId());// 自前でセットするCookieを作る cookie.setMaxAge(60 * 60 * 24 * 1);// Cookie有効期限1日 /* * setPathメソッドは、クッキーをサーバに対して送り返すべきパスを指定します。 * 指定されたURIおよびそのサブURIでのみ、クッキーは参照可能となります。 */ cookie.setPath("/"); response.addCookie(cookie);// Cookieの設定を上書き // :::::::::::::::::::::::: PrintWriter out = response.getWriter(); out.println("
"); // ブラウザ単位でサーバから割り振られるセッションIDの表示 out.println("sessionId=" + session.getId()); // アクセスカウンタの表示 out.print("
count=" + count); // ★tomcatのバージョンを表示 ServletContext scontext = getServletConfig().getServletContext(); out.println(scontext.getServerInfo()); // このサーブレットへのリンクの表示 out.println("
更新"); out.println(""); } }