解答例 - 実習課題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());
}
}

