Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP 애플리케이션 재시작 시에도 히트 카운터 데이터가 손실되지 않도록 구현하는 방법


JSP 히트 카운터 초기화 문제

웹 애플리케이션(웹 서버)을 재시작하면 애플리케이션 스코프에 저장된 변수들이 모두 초기화되기 때문에, 메모리에만 보관된 히트 카운터 역시 0으로 리셋됩니다. 이러한 데이터 손실을 방지하려면 카운터 값을 영구적으로 저장할 수 있는 데이터베이스를 활용하는 것이 효과적입니다.

데이터베이스 기반 히트 카운터 구현 절차

  • 카운터 테이블 생성: hitcount라는 컬럼 하나만 가진 테이블을 정의하고 초기값을 0으로 설정합니다.

  • 현재 값 조회: 페이지 방문(히트)이 발생할 때마다 테이블에서 hitcount 값을 읽어옵니다.

  • 값 증가 및 갱신: 조회한 hitcount 값을 1 증가시킨 후 새로운 값으로 테이블을 업데이트합니다.

  • 방문 수 표시: 갱신된 hitcount 값을 총 페이지 방문 수로 화면에 출력합니다.

  • 전체 페이지 적용: 사이트 전체의 방문 수를 집계하려면 위 로직을 공통 모듈(JSP include 파일, 서블릿 필터 등)로 만들어 모든 페이지에 적용합니다.

간단한 구현 예시

JDBC를 이용하면 다음과 같은 흐름으로 구현할 수 있습니다.

// 1) 현재 카운트 조회
PreparedStatement ps = con.prepareStatement("SELECT hitcount FROM Hits");
ResultSet rs = ps.executeQuery();
int count = 0;
if (rs.next()) {
    count = rs.getInt("hitcount");
}

// 2) 카운트 증가 후 갱신
count++;
PreparedStatement upd = con.prepareStatement("UPDATE Hits SET hitcount = ?");
upd.setInt(1, count);
upd.executeUpdate();

이처럼 카운터 값을 데이터베이스에 저장하면 애플리케이션을 여러 번 재시작하더라도 누적 방문 수가 그대로 유지되므로, 안정적으로 히트 통계를 관리할 수 있습니다.