在webxml 中用spring提供的過(guò)濾器<filter>
??<filter-name>encoding</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>
?</filter>以下是類的源碼public?class?CharacterEncodingFilter?extends?OncePerRequestFilter?{
?private?String?encoding;
?private?boolean?forceEncoding?=?false;
?public?void?setEncoding(String?encoding)?{
??this.encoding?=?encoding;
?}
?public?void?setForceEncoding(boolean?forceEncoding)?{
??this.forceEncoding?=?forceEncoding;
?}
?@Override
?protected?void?doFilterInternal(
???HttpServletRequest?request,?HttpServletResponse?response,?FilterChain?filterChain)
???throws?ServletException,?IOException?{
//為什么?request.getCharacterEncoding()?返回值會(huì)是null
??if?(this.encoding?!=?null?&&?(this.forceEncoding?||?request.getCharacterEncoding()?==?null))?{
???request.setCharacterEncoding(this.encoding);
???if?(this.forceEncoding)?{
????response.setCharacterEncoding(this.encoding);
???}
??}
??filterChain.doFilter(request,?response);
?}以下是調(diào)用方法的源碼@Override
??public?String?getCharacterEncoding()?{
???return?super.getCharacterEncoding()?!=?null???super.getCharacterEncoding()?:
?????WebUtils.DEFAULT_CHARACTER_ENCODING;
??}按照這個(gè)邏輯,怎么方法的返回值也不是null?。?!
1 回答

Tobey_滔
TA貢獻(xiàn)242條經(jīng)驗(yàn) 獲得超128個(gè)贊
首先你的過(guò)濾器有沒有配置映射??如果沒有請(qǐng)配置!!!其次是request的編碼默認(rèn)是null,但是最終按照ISO那個(gè)走的....而且我發(fā)現(xiàn)你的過(guò)濾器沒有一個(gè)初始化的步驟啊,比如init函數(shù),然后獲取初始化參數(shù)的UTF-8,賦值給encoding才對(duì)吧..不然你的encoding一直都是null..這樣會(huì)導(dǎo)致無(wú)法setCharaterEncoding()的觸發(fā)的!!!建議多檢查...我說(shuō)的不到一定對(duì)啊!!只是我個(gè)人見解...
添加回答
舉報(bào)
0/150
提交
取消