import javax.servlet.*; import javax.servlet.http.*; //(1)HttpSessionListenerインタフェースを実装したリスナークラス // を宣言します。 public class CheckSessionServlet implements HttpSessionListener { private static int sesCount = 0; //(2)セッションが作成されたときに呼び出される // sessionCreatedメソッドでセッション数を加算する処理と、 // 加算されたセッション数をログに記載する処理を行います。 public void sessionCreated(HttpSessionEvent hse) { sesCount++; ServletContext sc = hse.getSession().getServletContext(); sc.log("Now Session Count : " + sesCount); } //(3)セッションが破棄されたときに呼び出される // sessionDestroyedメソッドでセッション数を // 減算する処理を行います。 public void sessionDestroyed(HttpSessionEvent hse) { sesCount--; } }
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class AddSessionServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { //(1)getSessionメソッドで、セッションが作成されていない場合、 // 新たなセッションを作成します。 HttpSession hs1 = req.getSession(); res.setContentType("text/html; charset=Windows-31J"); PrintWriter out = res.getWriter(); out.println("<HTML><HEAD>"); out.println("<meta http-equiv=\"Content-Type\" " + "content=\"text/html; charset=Shift_JIS\">"); out.println("</HEAD><BODY>"); out.println("セッションの作成"); out.println("</BODY></HTML>"); } }
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems,Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <!-- (1)リスナークラスを登録します。 --> <listener> <listener-class>CheckSessionServlet</listener-class> </listener> <servlet> <servlet-name>AddSessionServlet</servlet-name> <servlet-class>AddSessionServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AddSessionServlet</servlet-name> <url-pattern>/AddSessionServlet</url-pattern> </servlet-mapping> </web-app>
--------------------------------- --------------------------------- ※※ログにセッション数が記載されていることが確認できます。 2004-09-21 23:33:51 StandardContext[/serTest]Now Session Count : 1 2004-09-21 23:34:53 StandardContext[/serTest]Now Session Count : 2