http://okjsp.pe.kr/bbs?act=VIEW&seq=20524&bbs=bbs4&keyfield=subject&keyword=접속자&pg=0 


* sessionChecker.jsp

<%@ page contentType="text/html; charset=euc-kr" %>
<jsp:useBean id="sc" class="SessionChecker" scope="application" />
<%
    session.setMaxInactiveInterval(60); // 걍 결과가 빨리 보고싶어서여.. 60초
    sc.setSession(session);
 out.println("현재 접속자 수 : " + sc.getNowUser());
%>

* SessionChecker.java

import java.io.*;
import java.util.*;
import javax.servlet.http.*;

public class SessionChecker{
 public static int nowUser = 0;

    public void setSession(HttpSession session){
 // 리스너 객체를 생성해서 이것도 세션에 같이 담는다.  리스너 라는 이름으로...
        session.setAttribute("listener", new CustomBindingListener());
    }

 public static void setNowUser(int x){
  nowUser += x;
 }

 public int getNowUser(){
  return this.nowUser;
 }
}


//                                                     여기서    구현했습니다..

class CustomBindingListener implements HttpSessionBindingListener {
    public void valueBound(HttpSessionBindingEvent event) {
 // 세션이 생겼을 할 내용
  SessionChecker.setNowUser(1);
  System.out.println("BOUND as " + event.getName() + " to " + event.getSession().getId());
    }

    public void valueUnbound(HttpSessionBindingEvent event) {
 // 세션이 종료되었을때
   SessionChecker.setNowUser(-1);
        System.out.println("UNBOUND as " + event.getName() + " to " + event.getSession().getId());
    }
}

Posted by [czar]
,