public abstract class BaseController { /** * 初始化數據綁定 * 1. 將全部傳遞進來的String進行HTML編碼,防止XSS攻擊 * 2. 將字段中Date類型轉換爲String類型 */ @InitBinder protected void initBinder(WebDataBinder binder) { // String類型轉換,將全部傳遞進來的String進行HTML編碼,防止XSS攻擊 binder.registerCustomEditor(String.class, new PropertyEditorSupport() { @Override public void setAsText(String text) { setValue(text == null ? null : StringEscapeUtils.escapeHtml4(text.trim())); } @Override public String getAsText() { Object value = getValue(); return value != null ? value.toString() : ""; } }); //…… }
咱們看到關鍵的一句是:StringEscapeUtils.escapeHtml4(text.trim()));html
那麼當你想要在數據庫中保存HTML內容的話有兩個地方須要修改:數據庫
1.jsp:jsp
<div class="control-group">
<label class="control-label">商品詳情:</label>
<div class="controls">
<form:textarea id="detail" path="detail" htmlEscape="true" rows="4" maxlength="1024" class="input-xxlarge "/>
<sys:ckeditor replace="detail" uploadPath="/cms/article" />
</div>
</div>
關鍵一句:htmlEscape="true"ide
2.controller編碼
在保存以前:進行解碼操做。spa
ecProduct.setDetail(StringEscapeUtils.unescapeHtml4(ecProduct.getDetail().trim()));code
後記:至於爲何CMS 中文章的添加就能夠不用解碼,數據庫存放的就是 HTML格式那,我尚未搞清楚,若是你高明白了請留言告知謝謝。orm