세션 유져 카운터 클래스

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
반응형

Linux에서 라인 수 카운트 하기.

  wc -l

해당 명령을 |와 함께 사용하면 됨.

EX

localhost_access_log.2021-06-22.txt 파일의 총 라인 수 카운트

  $ cat localhost_access_log.2021-06-22.txt |  wc -l
  90916

localhost_access_log.2021-06-22.txt 파일에서 특정 문자열이 포함된 라인 수 카운트

  # cat localhost_access_log.2021-06-22.txt | grep contractList.do | wc -l
  82
728x90
반응형

'OS > Linux' 카테고리의 다른 글

[Raspberry PI] 초기 셋팅  (0) 2022.03.07
[Linux] There are stopped jobs  (0) 2021.05.28
[Linux] 인터넷 속도 확인  (0) 2021.05.28
[Linux] top  (0) 2021.05.06
[Linux] 리눅스 서버 60초 안에 상황 파악하기  (0) 2021.05.06

+ Recent posts