JSTL Core Tag

merci·2023년 9월 5일
0

core tag에서 if, when choose, forEach는 종종 사용했지만 set, out, url은 잘 사용하지 않아서 정리합니다.

검색해보면 보다 선언적으로 만들기 위해서 사용한다고 하는데 각각의 예를 더 알아보겠습니다.

<c:set>

<c:set var="username" value="John" />

변수에 값을 할당하거나 객체의 속성 값을 설정할 때 사용합니다.
코드의 가독성을 향상시키고 재사용성 및 유지보수를 향상시키기 위해 사용합니다.

또한 값의 가공이 필요하거나 특정 범위 내에서 변수를 사용할 수 있습니다.

<c:set var="uppercaseDetail" value="${fn:toUpperCase(auth.authDetail)}" />

<c:set var="username" value="John Doe" scope="session" />




<c:out>

<c:out value="${user.comment}" />

주요 장점은 자동으로 HTML 특수 문자를 이스케이프하여 XSS(Cross-Site Scripting) 공격을 방지할 수 있습니다.
<c:out>의 결과는 문자열이 되므로 object를 기대하는 value 값에서는 .으로 내부 필드에 접근할 수 없습니다.

이스케이프 예시
<&lt;로 변환됩니다.
>&gt;로 변환됩니다.
"&quot;로 변환됩니다.
'&apos; 또는 &#x27;로 변환됩니다.
&&amp;로 변환됩니다.

이스케이프되므로 악성 스크립트가 DB에 INSERT되지 않고 실행되지 않습니다.



<c:url>

자동으로 url에 CONTEXT PATH를 붙여줍니다.
따라서 CONTEXT PATH변경에 신경쓰지 않아도 됩니다.

그리고 URL객체를 이용해서 파라미터를 쉽게 추가할 수 있습니다.

    let url = new URL(location.href);
    url.pathname = "<c:url value='/board'/>";
    url.searchParams.set('page', pageData.page);
    url.searchParams.set('size', pageData.size);

<c:url>은 자동으로 JSESSIONID를 url에 붙여줍니다.
또한 생성된 URL을 자동으로 인코딩하여 특수 문자나 공백 등이 올바르게 처리됩니다.



EL표현식 3항 연산

not empty를 이용해서 3항 연산을 만듭니다.

${not empty boardType.tsiCom ? boardType.tsiCom : boardContent.tsiCom}"
profile
작은것부터

0개의 댓글

Powered by GraphCDN, the GraphQL CDN