JSPページを作成する場合、<c:out>
は正確に何をしますか?次の両方の結果が同じであることに気付きました。
<p>The person's name is <c:out value="${person.name}" /></p>
<p>The person's name is ${person.name}</p>
c:out
は、クロスサイトスクリプティングを回避できるようにHTML文字をエスケープします。
person.name = <script>alert("Yo")</script>
の場合
スクリプトは2番目のケースで実行されますが、c:out
を使用している場合は実行されません
Will Wagnerが言ったように、jspの古いバージョンでは、c:out
を使用してダイナミックテキストを出力する必要があります。
さらに、次の構文を使用します。
<c:out value="${person.name}">No name</c:out>
名前がnullの場合、「名前なし」というテキストを表示できます。
c:out
には、person.name
の値がnullである場合にデフォルト値を割り当てるための属性もあります。
Trueに等しい属性escapeXml値を使用して、Xmlエンティティのエスケープを明示的に有効にできます。参考までに、デフォルトでは「true」です。
古いバージョンのJSPは2番目の構文をサポートしていませんでした。