今天跟項(xiàng)目組做集成的時(shí)候發(fā)現(xiàn)一個(gè)很奇怪的亂碼問題,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的過濾器處理,這時(shí)候沒有做編碼處理,已經(jīng)是亂碼,到下面的filter處理時(shí)已經(jīng)時(shí)亂碼,再 做編碼處理已經(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> |
|