JSP는 응답 객체(response object)가 제공하는 메커니즘을 활용하면 웹페이지가 일정한 시간 간격마다 자동으로 새로고침되도록 손쉽게 구현할 수 있습니다.
setIntHeader() 메서드란?
웹페이지를 자동으로 새로고침하는 가장 간단한 방법은 response 객체의 setIntHeader() 메서드를 사용하는 것입니다. 이 메서드의 시그니처는 다음과 같습니다.
public void setIntHeader(String header, int headerValue)
이 메서드는 브라우저에 "Refresh" 헤더를 전송하며, 두 번째 인자로 전달된 정수 값(초 단위)만큼의 시간이 지난 후 페이지가 다시 로드되도록 합니다.
자동 새로고침 예제
다음 예제에서는 setIntHeader() 메서드로 Refresh 헤더를 설정하여, 디지털 시계처럼 5초마다 현재 시간이 갱신되는 화면을 만들어 보겠습니다.
예제 코드
<%@ page import = "java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// 새로고침 간격을 5초로 설정
response.setIntHeader("Refresh", 5);
// 현재 시간 가져오기
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("현재 시간: " + CT + "\n");
%>
</center>
</body>
</html>실행 방법 및 결과
위 코드를 main.jsp 파일로 저장한 뒤 브라우저에서 접속해 보세요. 그러면 아래와 같이 5초마다 시스템의 현재 시간이 자동으로 갱신되어 표시됩니다. JSP를 실행한 후 잠시만 기다리면 결과를 확인할 수 있습니다.
Auto Refresh Header Example Current Time is: 9:44:50 PM
참고: HTML 메타 태그를 이용한 대체 방법
JSP 코드를 수정하지 않고도 HTML의 <meta> 태그로 동일한 효과를 얻을 수 있습니다. 다음 코드를 <head> 영역에 추가하면 역시 5초마다 페이지가 새로고침됩니다.
<meta http-equiv="Refresh" content="5">
다만 갱신 주기를 서버 측 로직에 따라 동적으로 변경해야 하는 경우에는 response 객체의 setIntHeader() 메서드를 사용하는 것이 훨씬 유연하고 확장성이 좋습니다.