JSP에서 <% 리터럴을 이스케이프하는 방법
JSP 페이지를 작성하다 보면 <% 문자를 화면에 그대로 출력해야 하는 경우가 있습니다. 하지만 JSP에서는 <%가 스크립틀릿(scriptlet)의 시작 기호로 해석되기 때문에, 이스케이프 처리 없이 그대로 작성하면 파싱 오류가 발생합니다.
이 문제는 아주 간단하게 해결할 수 있습니다. 바로 백슬래시(\) 문자를 사용하는 것입니다. <%를 <\% 형태로 바꿔주면, JSP 컨테이너는 이를 스크립틀릿이 아닌 일반 텍스트로 인식하여 브라우저에 그대로 출력합니다.
적용 예제
아래 예제는 이스케이프 처리된 구문과 실제 스크립틀릿 구문을 함께 보여줍니다.
<html>
<head>
<title>A Comment Test</title>
</head>
<body>
<h2>Syntax: <\%= (new java.util.Date()).toLocaleString() %\></h2>
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
</body>
</html>
위 코드에서 <h2> 태그 안의 <\%와 %\>는 백슬래시 덕분에 실행되지 않고 문자 그대로 화면에 표시됩니다. 반면 <p> 태그 안의 <%= ... %>는 실제 스크립틀릿으로 동작하여 현재 날짜와 시간을 출력합니다.
정리
- JSP에서
<%를 문자 그대로 출력하려면<\%처럼 백슬래시로 이스케이프합니다. - 닫는 기호인
%>도 마찬가지로%\>로 이스케이프할 수 있습니다. - 이 방법은 JSP 문법 설명이나 코드 예제를 문서화할 때 특히 유용합니다.