解答例 - 実習課題1 - 8.リスナー2
(実習課題1)
以下のWebアプリケーションを作成しなさい。
- セッションを利用して、現在、Webアプリケーションを利用しているクライアントの数をカウントすること。
- またクライアント数を表示するページを作成する事。
解答例
/* * CountBean.java TECHSCORE Java Servlet8章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter8.exercise1; public class CountBean { private int count = 0; public int getCount() { return count; } synchronized public void increase(){ count++; } synchronized public void decrease(){ count--; } }
/* * UserCountListener.java TECHSCORE Java Servlet8章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter8.exercise1; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class UserCountListener implements HttpSessionListener { private CountBean count = new CountBean(); public void sessionCreated(HttpSessionEvent event) { count.increase(); event.getSession().setAttribute("userCount", count); } public void sessionDestroyed(HttpSessionEvent event) { count.decrease(); } }
/* * UserCountServlet.java TECHSCORE Java Servlet8章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.servlet.chapter8.exercise1; 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; public class UserCountServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer buffer = new StringBuffer(); buffer.append("<html><head><title>Servlet 8章実習課題 1"); buffer.append("</title></head><body>"); CountBean countBean = (CountBean) request.getSession().getAttribute("userCount"); if (countBean != null) { buffer.append("現在の利用者は").append(countBean.getCount()).append("人です"); } else { buffer.append("Tomcatリロード前のSessionでアクセスしています。"); } buffer.append("</body></html>"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter writer = response.getWriter(); writer.println(buffer.toString()); } }