JSP

JSP - 코어태그 <c:out>와 <c:set>

jaycheol 2024. 8. 30. 17:52
반응형

<c:out>와 <c:set>

JSTL(JavaServer Pages Standard Tag Library)은 JSP(JavaServer Pages)에서 보다 간단하고 안전하게 HTML을 생성하고 데이터 처리를 할 수 있도록 도와주는 태그 라이브러리입니다. JSTL은 여러 가지 태그 라이브러리를 제공하지만, 여기에서는 가장 기본이 되는 코어(Core) 태그 중 두 가지인 <c:out>와 <c:set>에 대해 집중적으로 다뤄보겠습니다.

 

1. <c> 태그

<c:out> 태그는 JSP에서 표현 언어(EL)를 사용하여 데이터를 출력할 때 사용됩니다. 이 태그는 데이터 출력 시 HTML 특수 문자를 이스케이프(escape)하여 XSS(Cross-Site Scripting) 공격을 방지하는 데 매우 유용합니다.

주요 특징

  • HTML 특수 문자 이스케이프: 예를 들어, &는 &amp;, <는 &lt;로 변환하여 출력합니다. 이를 통해 사용자가 입력한 값이 그대로 HTML로 렌더링되어 공격 벡터가 되지 않도록 합니다.
  • 값이 없을 때 기본값 설정 가능: 출력하려는 값이 null일 경우, 기본값을 지정하여 출력할 수 있습니다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!-- 사용자 이름을 안전하게 출력 -->
<c:out value="${user.name}" />

<!-- 사용자 나이를 출력하되, 값이 없으면 'N/A'를 출력 -->
<c:out value="${user.age}" default="N/A" />

속성

  • value: 출력하려는 값 (필수).
  • default: 출력하려는 값이 null일 때 대신 출력할 기본값 (선택).

 


 

2. <c> 태그

<c:set> 태그는 JSP 페이지의 특정 스코프에 변수를 설정하거나 값을 저장할 때 사용됩니다. 이를 통해 JSP 페이지에서 데이터를 보다 체계적으로 관리하고, 다양한 스코프(page, request, session, application)에 걸쳐 데이터를 활용할 수 있습니다.

주요 특징

  • 다양한 스코프 지원: page, request, session, application 스코프에 데이터를 설정할 수 있습니다. 이로 인해 JSP 페이지에서 변수를 필요에 따라 공유하거나 유지할 수 있습니다.
  • 동적 데이터 할당: EL을 사용하여 변수를 설정할 수 있으며, 동적으로 값이 할당될 수 있습니다.

사용법

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!-- 'page' 스코프에 'message' 변수를 설정 -->
<c:set var="message" value="Hello, JSP!" scope="page" />

<!-- 'session' 스코프에 'userName' 변수를 설정 -->
<c:set var="userName" value="${param.name}" scope="session" />

속성

  • var: 설정할 변수 이름 (필수).
  • value: 변수에 할당할 값 (필수).
  • scope: 변수가 속할 스코프 (선택, 기본값은 page). 가능한 값은 page, request, session, application.

3. JSTL 코어 태그의 다른 기능

JSTL 코어 태그는 <c:out>와 <c:set> 외에도 여러 가지 기능을 제공하여 JSP 페이지를 더욱 동적으로 만들 수 있습니다. 몇 가지 다른 중요한 코어 태그는 다음과 같습니다:

  • <c>: 조건문을 실행할 때 사용합니다.
<c:if test="${user.age > 18}">
    <p>성인입니다.</p>
</c:if>

<c>, <c>, <c>: 여러 조건을 처리할 때 사용하는 다중 선택 구문입니다.

<c:choose>
    <c:when test="${user.age < 18}">
        <p>미성년자입니다.</p>
    </c:when>
    <c:otherwise>
        <p>성인입니다.</p>
    </c:otherwise>
</c:choose>

<c>: 컬렉션이나 배열을 반복 처리할 때 사용합니다.

<c:forEach var="item" items="${userList}">
    <p>${item.name}</p>
</c:forEach>

 

4. JSTL의 장점

  • 간결한 코드: JSTL 태그를 사용하면 스크립트릿(<% %>)을 사용하지 않고도 로직을 처리할 수 있어 코드가 훨씬 간결해집니다.
  • 유지보수성: 태그 기반의 구문은 HTML과 유사하여, JSP 페이지의 가독성과 유지보수성을 크게 향상시킵니다.
  • 보안: c:out와 같은 태그는 기본적으로 XSS 방지 기능을 제공하므로, 보안이 강화된 JSP 페이지를 작성할 수 있습니다.

결론

<c:out>와 <c:set> 태그는 JSP에서 데이터를 처리하고 출력하는 데 필수적인 도구입니다. JSTL 코어 태그는 JSP 페이지의 복잡한 로직을 간단하게 표현할 수 있도록 도와주며, 보안과 유지보수성을 향상시키는 데 기여합니다. 이러한 태그를 효과적으로 사용하면 더 안전하고 효율적인 웹 애플리케이션을 개발할 수 있습니다.

반응형
댓글수0