在 ① 和 ② 處,我們未經任何轉義處理就直接將變量輸出到 HTML 網頁中,由于這些變量可能包含一些特殊的 HTML 的字符,它們將可能破壞整個 HTML 文檔的結構。我們可以從以上 JSP 頁面的一個具體輸出中了解這一問題:
<table border="1">
<tr>
<td>姓名:</td><td></td><tr></table></td>
① 破壞了 <table> 的結構
</tr>
<tr>
<td>年齡:</td><td>28</td>
</tr>
</table>
<input value=" " type="button" type="text" />
② 將本來是輸入框組件偷梁換柱為按鈕組件
融合動態數據后的 HTML 網頁已經面目全非,首先 ① 處的 <table> 結構被包含 HTML 特殊字符的 userName 變量截斷了,造成其后的 <table> 代碼變成無效的內容;其次,② 處 <input> 被動態數據改換為按鈕類型的組件(type="button")。為了避免這一問題,我們需要事先對可能破壞 HTML 文檔結構的動態數據進行轉義處理。Spring 為我們提供了一個簡單適用的 HTML 特殊字符轉義工具類,它就是 HtmlUtils。下面,我們通過一個簡單的例子了解 HtmlUtils 的具體用法: