Réponses:
c:out échappe les caractères HTML afin que vous puissiez éviter les scripts intersites.
si person.name = <script>alert("Yo")</script>
le script sera exécuté dans le second cas, mais pas lors de l'utilisation c:out
Comme l'a dit Will Wagner, dans l'ancienne version de jsp, vous devriez toujours l'utiliser c:outpour afficher du texte dynamique.
De plus, en utilisant cette syntaxe:
<c:out value="${person.name}">No name</c:out>
vous pouvez afficher le texte "Aucun nom" lorsque le nom est nul.
c:outa également un attribut pour affecter une valeur par défaut si la valeur de person.namese trouve être nulle.
Les anciennes versions de JSP ne prenaient pas en charge la seconde syntaxe.