JSP : JSTL의 <c : out> 태그


110

JSP 페이지 작성, 정확히 무엇을 <c:out>합니까? 다음 두 가지 모두 동일한 결과를 나타냅니다.

<p>The person's name is <c:out value="${person.name}" /></p>
<p>The person's name is ${person.name}</p>

답변:


153

c:out 크로스 사이트 스크립팅을 피할 수 있도록 HTML 문자를 이스케이프합니다.

만약 person.name = <script>alert("Yo")</script>

스크립트는 두 번째 경우에 실행되지만 사용할 때는 실행되지 않습니다. c:out


2
'escapeXML'이 true로 설정된 경우에만 (기본값인지 확실하지 않음)
Chris Serra

17
기본적으로 사실이라고 생각합니다.
Zack The Human

7
NB는 HTML이 아닌 XML을 이스케이프합니다. JSTL의 더 성가신 미묘함 중 하나입니다. 나는 항상 내 HTML 이스케이프 EL fn을 작성합니다.
Adam Gent

4
그렇지 escapeXML "true"로 escapeXml = 그래서 속성 이름은 대소 문자를 구분
마크 촐리

2
이 답변의 코드 샘플이 무엇을 보여주는 지 모르겠습니다. 누군가 명확히 할 수 있습니까? 그것은 "두 번째 경우"를 언급하지만 나는 그것을 보지 못하고 코드에서 c : out이 사용되는 것을 보지 못합니다.
IcedDante 2014 년

126

Will Wagner가 말했듯이, 이전 버전의 jsp에서는 항상 c:out동적 텍스트를 출력 하는 데 사용해야 합니다.

또한 다음 구문을 사용합니다.

<c:out value="${person.name}">No name</c:out>

name이 null 인 경우 "No name"이라는 텍스트를 표시 할 수 있습니다.


24
멋있는! 난 몰랐어.
Adam Asham

동의합니다. 가르치고 도와 주셔서 감사합니다. 나는 그것도 몰랐다. 건배!
B-Money

20
또는 <c : out value = "$ {person.name}"default = "No Name"/>
gmustudent

2
JSR 52, 유지 보수 릴리스 2, 22 페이지 "본체 포함"을 참조하십시오. 링크 : download.oracle.com/otndocs/jcp/jstl-1.2-mrel2-eval-oth-JSpec
Barett

1
@Barett. 멋있는. 왜 이것이 튜토리얼이나 예제를 만들지 않는지 궁금합니다. 기본 속성 IMO보다 더 편리한 구문입니다.
Thilo


5

escapeXml 값이 true와 같은 속성을 사용하여 Xml 엔터티의 이스케이프를 명시 적으로 활성화 할 수 있습니다. 참고로, 기본적으로 "true"입니다.


일부 예제 코드는이 답변을 완성하는 데 정말 도움이됩니다.
RachelD dec.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.