The NoteBook of EricKong

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

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

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

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

          解決辦法:   
           錯(cuò)誤的順序:
              
               <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 2011-12-29 16:42 Eric_jiang 閱讀(3183) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): JSP

          Feedback

          # re: filter-mapping的執(zhí)行順序和字符集設(shè)置的優(yōu)先級(jí) 2016-01-10 16:02 范甘迪
          s'd'f's'd  回復(fù)  更多評(píng)論
            

          # re: filter-mapping的執(zhí)行順序和字符集設(shè)置的優(yōu)先級(jí) 2016-07-19 14:02 d
          a  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 江川县| 琼结县| 洪泽县| 汤原县| 恩平市| 绥滨县| 宁南县| 甘德县| 福安市| 兴国县| 南部县| 若尔盖县| 屏东县| 闽侯县| 明水县| 平湖市| 延吉市| 抚州市| 信丰县| 宁夏| 阿巴嘎旗| 嘉荫县| 抚松县| 开远市| 武城县| 唐山市| 天峻县| 涟水县| 甘谷县| 富裕县| 泸溪县| 哈巴河县| 阳朔县| 藁城市| 兴国县| 获嘉县| 隆安县| 大理市| 永善县| 雷山县| 大姚县|