<c:url> 태그란 무엇인가?
JSTL(JavaServer Pages Standard Tag Library)의 <c:url> 태그는 URL을 문자열 형태로 가공하여 변수에 저장하는 기능을 제공합니다. 세션 추적이 필요한 상황에서는 URL 재작성(URL Rewriting)을 자동으로 수행해 주며, var 속성을 지정하면 가공된 URL을 해당 변수에 담아 재사용할 수 있습니다.
본질적으로 <c:url> 태그는 서블릿 API의 response.encodeURL() 메서드를 호출하는 것과 동일한 역할을 하는 대체 문법입니다. 이 태그가 제공하는 실질적인 장점은, 하위 <c:param> 태그로 지정한 매개변수까지 모두 포함하여 URL을 올바르게 인코딩해 준다는 점입니다. 덕분에 쿼리 스트링에 특수문자나 공백이 포함되어 있어도 안전하게 처리됩니다.
주요 속성
<c:url> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 기준이 되는 URL | 필수 | 없음 |
| context | 슬래시(/) 뒤에 로컬 웹 애플리케이션 이름을 지정 | 선택 | 현재 애플리케이션 |
| var | 처리된 URL을 저장할 변수의 이름 | 선택 | 페이지에 바로 출력 |
| scope | 처리된 URL을 담는 변수의 유효 범위 | 선택 | page |
사용 예제
다음은 <c:url> 태그를 활용해 링크 URL을 생성하는 기본적인 예제입니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title><c:url> 태그 예제</title>
</head>
<body>
<a href = "<c:url value = "/jsp/index.htm"/>">TEST</a>
</body>
</html>위 코드를 실행하면 /jsp/index.htm 경로가 컨텍스트 경로와 함께 인코딩되어 링크가 생성되며, 화면에는 다음과 같이 출력됩니다.
TEST
정리
<c:url> 태그는 단순히 URL을 출력하는 것을 넘어, 세션 관리를 위한 URL 재작성과 매개변수 인코딩을 자동으로 처리해 주는 편리한 도구입니다. 특히 쿠키를 사용할 수 없는 환경에서 세션을 유지해야 하는 경우에 유용하며, <c:param> 태그와 함께 사용하면 동적인 쿼리 스트링도 안전하게 구성할 수 있습니다.