Risposte:
c:out
esegue l'escape dei caratteri HTML in modo da evitare lo scripting tra siti.
Se person.name = <script>alert("Yo")</script>
lo script verrà eseguito nel secondo caso, ma non durante l'utilizzo c:out
Come ha detto Will Wagner, nella vecchia versione di jsp dovresti sempre usare c:out
per produrre testo dinamico.
Inoltre, utilizzando questa sintassi:
<c:out value="${person.name}">No name</c:out>
è possibile visualizzare il testo "Nessun nome" quando il nome è nullo.
c:out
ha anche un attributo per l'assegnazione di un valore predefinito se il valore di person.name
risulta essere nullo.
Le versioni precedenti di JSP non supportavano la seconda sintassi.