세션 유져 카운터 클래스
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SessionUserCounter implements HttpSessionListener {
  private static Logger logger = LoggerFactory.getLogger(SessionUserCounter.class);
  
  //  총 접속자 수
  public static int count;
  
  public static int getCount() {
    return count;
  }
  @Override
  public void sessionCreated(HttpSessionEvent event) {
    //  세션이 생성될 때 세션객체를 꺼내옴.
    HttpSession session = event.getSession();
    count ++;
    logger.error("\n\tSESSION CREATED : {}, TOTAL ACCESSER : {}", session.getId(), count);
  }
  @Override
  public void sessionDestroyed(HttpSessionEvent event) {
    // 세션이 소멸될 때
    count--;
    if( count < 0 ) count = 0;
    
    HttpSession session = event.getSession();
    logger.error("\n\tSESSION DESTROYED : {}, TOTAL ACCESSER : {}", session.getId(), count);
  }
  
}
web.xml 설정
  <listener>
    <listener-class>{패키지 경로}.SessionUserCounter</listener-class>
  </listener>
Java 소스에서 클래스를 불러와서 사용해도 되고, JSP에서 class를 import 해서 사용해도 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true"
	import ="{패키지 경로}.SessionUserCounter"
%>
현재 접속자 수 : <%=SessionUserCounter.getCount()%>
스프링 허접이라 Lazy-Init SingleTon Pattern을 사용해야 하는지, 아니면 Listener에 등록된 객체이기 때문에 필요 없는지는 잘 모르겠다.
728x90
    
    
  반응형
    
    
    
  'WEB > Spring' 카테고리의 다른 글
| [Error] java.lang.illegalargumentexception setattribute non-serializable attribute (1) | 2021.06.24 | 
|---|---|
| [Spring] SiteMesh와 Tiles 그리고 다른 TemplateEngine (0) | 2020.12.08 | 
| [Spring] Exception starting filter Set Character Encoding (0) | 2020.12.01 | 
| [Spring] 서버 재시작 없이 java 파일 수정 적용하기 (0) | 2020.11.30 | 
| [Spring] JSON으로 Response하기 위한 설정 (0) | 2019.12.19 |