<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
encoding用來設定編碼格式,forceEncoding用來設定是否理會 request.getCharacterEncoding()方法,設定為true則強制覆蓋之前的編碼格式。
.原始碼賞析
當Servlet容器啟動的時候,會讀取web.xml中對於過濾器的配置資訊, 讀取到<init-param>中的子標籤<param-name>encoding和forceEncoding所對應的<param-value>的值,再通過呼叫該類setEncoding(String encoding)和setForceEncoding(boolean forceEncoding) 將值注入到這連個欄位中。
在這裡就能看到為什麼設定foreEncoding為true會覆蓋掉request.getCharacterEncoding()中的方法了吧,呵呵