히트 카운터(hit counter)는 웹 사이트의 특정 페이지가 몇 번 방문되었는지 알려주는 간단한 통계 도구입니다. 보통 방문자가 가장 먼저 홈페이지에 접속한다고 가정하고 index.jsp 페이지에 히트 카운터를 붙이는 것이 일반적입니다.
JSP에서 히트 카운터를 구현하려면 application 내장 객체(implicit object)와 관련 메서드인 getAttribute(), setAttribute()를 활용하면 됩니다.
application 객체는 JSP 페이지의 전체 생명 주기(lifecycle)를 대표하는 객체입니다. JSP 페이지가 초기화될 때 생성되며, jspDestroy() 메서드에 의해 JSP 페이지가 제거될 때 함께 소멸합니다.
애플리케이션 레벨에서 변수를 설정하는 문법은 다음과 같습니다.
application.setAttribute(String Key, Object Value);
위 메서드를 사용해 히트 카운터 변수를 설정하거나 초기화할 수 있습니다. 앞서 설정한 변수를 읽어올 때는 아래 메서드를 사용합니다.
application.getAttribute(String Key);
사용자가 페이지에 접속할 때마다 현재 히트 카운터 값을 읽어 1만큼 증가시킨 뒤, 다시 저장해 두면 됩니다. application 객체는 모든 사용자와 세션이 공유하는 범위(scope)이므로, 여러 방문자의 접속이 하나의 카운터에 누적됩니다.
다음 예제는 JSP를 사용해 특정 페이지의 총 방문 횟수를 세는 방법을 보여줍니다. 만약 웹 사이트 전체의 방문 횟수를 세고 싶다면 동일한 코드를 모든 JSP 페이지에 포함시켜야 합니다.
예제 코드
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>JSP의 Application 객체</title>
</head>
<body>
<%
Integer hitsCount = (Integer)application.getAttribute("hitCounter");
if( hitsCount ==null || hitsCount == 0 ) {
/* 첫 방문 */
out.println("Welcome to my website!");
hitsCount = 1;
} else {
/* 재방문 */
out.println("Welcome back to my website!");
hitsCount += 1;
}
application.setAttribute("hitCounter", hitsCount);
%>
<center>
<p>Total number of visits: <%= hitsCount%></p>
</center>
</body>
</html>
위 코드를 main.jsp 파일로 저장한 뒤, 브라우저에서 https://localhost:8080/main.jsp URL로 호출해 보세요. 화면에는 히트 카운터 값이 표시되며, 페이지를 새로 고침할 때마다 숫자가 1씩 증가합니다. 서로 다른 브라우저로 접속해도 카운터는 계속 증가하며, 결과는 다음과 같습니다.
실행 결과
Welcome back to my website! Total number of visits: 12
참고 사항
application 객체에 저장된 값은 서버가 재시작되면 초기화된다는 점에 유의하세요. 따라서 실무 환경에서는 방문 수를 영구적으로 보관하기 위해 데이터베이스나 파일에 카운터 값을 저장하는 방식을 함께 사용하는 것이 좋습니다. 또한 동시 접속 상황에서도 카운터 값이 정확하게 유지되도록 synchronized 블록으로 증가 로직을 감싸는 방법도 고려할 수 있습니다.