Pisząc stronę JSP, co dokładnie robi <c:out>
? Zauważyłem, że oba mają ten sam wynik:
<p>The person's name is <c:out value="${person.name}" /></p>
<p>The person's name is ${person.name}</p>
c:out
wymyka znaki HTML, dzięki czemu można uniknąć skryptów między witrynami.
Jeśli person.name = <script>alert("Yo")</script>
skrypt zostanie wykonany w drugim przypadku, ale nie podczas używania c:out
Jak powiedział Will Wagner, w starej wersji jsp powinieneś zawsze używać
c:out
do generowania dynamicznego tekstu.Co więcej, używając tej składni:
możesz wyświetlić tekst „No name”, gdy nazwa jest pusta.
źródło
c:out
ma również atrybut do przypisywania wartości domyślnej, jeśli wartośćperson.name
jest równa null.Źródło: out (dokumentacja wygenerowana przez TLDDoc)
źródło
Możesz jawnie włączyć ucieczkę jednostek XML, używając atrybutu wartości escapeXml równej true. FYI, domyślnie jest to „prawda”.
źródło
Starsze wersje JSP nie obsługiwały drugiej składni.
źródło