세션 유져 카운터 클래스
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에 등록된 객체이기 때문에 필요 없는지는 잘 모르겠다.
'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 |