目次へ

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

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp