方槍槍的java世界

          不要因為風(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

          filter-mapping的執(zhí)行順序和字符集設(shè)置的優(yōu)先級研究

          問題起因:
             今天遇到一個亂碼問題,以前已經(jīng)配置好了的呀。而且是普遍現(xiàn)象,看來是公共的變更引起的問題。
             
          分析過程:

            于是開始進行調(diào)試,因為是公共問題,所以就對web.xml最近的變更進行增刪調(diào)試,發(fā)現(xiàn)如果使用SecurityFilter就報錯,去掉久正常了。
            仔細檢查,發(fā)現(xiàn)如下現(xiàn)象:
            1、在設(shè)置字符集之前, 提前調(diào)用了request.getParameter()方法,就會出現(xiàn)問題。即使后來再設(shè)置字符集,隨后的action接收的數(shù)據(jù)也會亂碼。
              2、對于同一個url,如:*.do,filter-mapping 是有順序的,按照web.xml中的配置順序。

              從網(wǎng)上查到的結(jié)論:
            根據(jù)servlet2.3規(guī)范filter執(zhí)行是按照web.xml配置的filter-mapping先后順序進行執(zhí)行,所以上面的配置會導(dǎo)致遇見*.do的url請求,先進行SecurityFilter的過濾器處理,這時候沒有做編碼處理,已經(jīng)是亂碼,到下面的filter處理時已經(jīng)時亂碼,再做編碼處理已經(jīng)沒有用處。

          解決辦法:   
           錯誤的順序:
              
               <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>
           
           正確的順序:
           
               <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>
             
             

          posted on 2008-04-23 21:06 做強大的自己 閱讀(1979) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 哈巴河县| 黄冈市| 金川县| 庄河市| 香港| 家居| 青铜峡市| 汝阳县| 沙湾县| 建瓯市| 金寨县| 罗山县| 商城县| 紫金县| 沙田区| 九台市| 新河县| 林口县| 河间市| 城市| 伊宁市| 衡东县| 七台河市| 米泉市| 商河县| 拉萨市| 杭州市| 高陵县| 阿拉善盟| 洮南市| 从江县| 大厂| 菏泽市| 金川县| 普安县| 攀枝花市| 车致| 孝义市| 紫云| 巴青县| 南川市|