今天跟項(xiàng)目組做集成的時候發(fā)現(xiàn)一個很奇怪的亂碼問題,web.xml的filter、jsp頁面均進(jìn)行了編碼設(shè)置, 反復(fù)調(diào)試發(fā)現(xiàn)引起bug的原因是web.xml的下面幾行:
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
根 據(jù)servlet2.3規(guī)范filter執(zhí)行是按照web.xml配置的filter-mapping先后順序進(jìn)行執(zhí)行,所以上面的配置會導(dǎo)致遇見 *.do的url請求,先進(jìn)行SecurityFilter的過濾器處理,這時候沒有做編碼處理,已經(jīng)是亂碼,到下面的filter處理時已經(jīng)時亂碼,再 做編碼處理已經(jīng)沒有用處。
修正方式,調(diào)整filter-mapping順序,如下:
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。