隨筆-6  評論-38  文章-40  trackbacks-0
          過濾類
          ??1/**
          ??2?*
          ??3?*
          ??4?*?apache?出的?struts?hibernate?字符編碼處理過濾器
          ??5?*
          ??6?*
          ??7?*/

          ??8package?com.zeroidea.common;
          ??9/*
          ?10*?Copyright?2004?The?Apache?Software?Foundation
          ?11*
          ?12*?Licensed?under?the?Apache?License,?Version?2.0?(the?"License");
          ?13*?you?may?naot?use?this?file?except?in?compliance?with?the?License.
          ?14*?You?may?obtain?a?copy?of?the?License?at
          ?15*
          ?16*?????http://www.apache.org/licenses/LICENSE-2.0
          ?17*
          ?18*?Unless?required?by?applicable?law?or?agreed?to?in?writing,?software
          ?19*?distributed?under?the?License?is?distributed?on?an?"AS?IS"?BASIS,
          ?20*?WITHOUT?WARRANTIES?OR?CONDITIONS?OF?ANY?KIND,?either?express?or?implied.
          ?21*?See?the?License?for?the?specific?language?governing?permissions?and
          ?22*?limitations?under?the?License.
          ?23*/

          ?24
          ?25import?java.io.IOException;
          ?26
          ?27import?javax.servlet.Filter;
          ?28import?javax.servlet.FilterChain;
          ?29import?javax.servlet.FilterConfig;
          ?30import?javax.servlet.ServletException;
          ?31import?javax.servlet.ServletRequest;
          ?32import?javax.servlet.ServletResponse;
          ?33
          ?34
          ?35/**
          ?36?*?<p>Example?filter?that?sets?the?character?encoding?to?be?used?in?parsing?the
          ?37?*?incoming?request,?either?unconditionally?or?only?if?the?client?did?not
          ?38?*?specify?a?character?encoding.??Configuration?of?this?filter?is?based?on
          ?39?*?the?following?initialization?parameters:</p>
          ?40?*?<ul>
          ?41?*?<li><strong>encoding</strong>?-?The?character?encoding?to?be?configured
          ?42?*?????for?this?request,?either?conditionally?or?unconditionally?based?on
          ?43?*?????the?<code>ignore</code>?initialization?parameter.??This?parameter
          ?44?*?????is?required,?so?there?is?no?default.</li>
          ?45?*?<li><strong>ignore</strong>?-?If?set?to?"true",?any?character?encoding
          ?46?*?????specified?by?the?client?is?ignored,?and?the?value?returned?by?the
          ?47?*?????<code>selectEncoding()</code>?method?is?set.??If?set?to?"false,
          ?48?*?????<code>selectEncoding()</code>?is?called?<strong>only</strong>?if?the
          ?49?*?????client?has?not?already?specified?an?encoding.??By?default,?this
          ?50?*?????parameter?is?set?to?"true".</li>
          ?51?*?</ul>
          ?52?*
          ?53?*?<p>Although?this?filter?can?be?used?unchanged,?it?is?also?easy?to
          ?54?*?subclass?it?and?make?the?<code>selectEncoding()</code>?method?more
          ?55?*?intelligent?about?what?encoding?to?choose,?based?on?characteristics?of
          ?56?*?the?incoming?request?(such?as?the?values?of?the?<code>Accept-Language</code>
          ?57?*?and?<code>User-Agent</code>?headers,?or?a?value?stashed?in?the?current
          ?58?*?user's?session.</p>
          ?59?*
          ?60?*?@author?Craig?McClanahan
          ?61?*?@version?$Revision:?1.2?$?$Date:?2004/03/18?16:40:28?$
          ?62?*/

          ?63
          ?64public?class?SetCharacterEncodingFilter?implements?Filter?{
          ?65
          ?66
          ?67????//?-----------------------------------------------------?Instance?Variables
          ?68
          ?69
          ?70????/**
          ?71?????*?The?default?character?encoding?to?set?for?requests?that?pass?through
          ?72?????*?this?filter.
          ?73?????*/

          ?74????protected?String?encoding?=?null;
          ?75
          ?76????/**
          ?77?????*?The?filter?configuration?object?we?are?associated?with.??If?this?value
          ?78?????*?is?null,?this?filter?instance?is?not?currently?configured.
          ?79?????*?
          ?80?????*?@uml.property?name="filterConfig"
          ?81?????*?@uml.associationEnd?multiplicity="(0?1)"
          ?82?????*/

          ?83????protected?FilterConfig?filterConfig?=?null;
          ?84
          ?85
          ?86
          ?87????/**
          ?88?????*?Should?a?character?encoding?specified?by?the?client?be?ignored?
          ?89?????*/

          ?90????protected?boolean?ignore?=?true;
          ?91
          ?92
          ?93????//?---------------------------------------------------------?Public?Methods
          ?94
          ?95
          ?96????/**
          ?97?????*?Take?this?filter?out?of?service.
          ?98?????*/

          ?99????public?void?destroy()?{
          100
          101????????this.encoding?=?null;
          102????????this.filterConfig?=?null;
          103
          104????}

          105
          106
          107????/**
          108?????*?Select?and?set?(if?specified)?the?character?encoding?to?be?used?to
          109?????*?interpret?request?parameters?for?this?request.
          110?????*
          111?????*?@param?request?The?servlet?request?we?are?processing
          112?????*?@param?result?The?servlet?response?we?are?creating
          113?????*?@param?chain?The?filter?chain?we?are?processing
          114?????*
          115?????*?@exception?IOException?if?an?input/output?error?occurs
          116?????*?@exception?ServletException?if?a?servlet?error?occurs
          117?????*/

          118????public?void?doFilter(ServletRequest?request,?ServletResponse?response,
          119?????????????????????????FilterChain?chain)
          120????throws?IOException,?ServletException?{
          121
          122????????//?Conditionally?select?and?set?the?character?encoding?to?be?used
          123????????if?(ignore?||?(request.getCharacterEncoding()?==?null))?{
          124????????????String?encoding?=?selectEncoding(request);
          125????????????if?(encoding?!=?null)
          126????????????????request.setCharacterEncoding(encoding);
          127????????}

          128
          129????//?Pass?control?on?to?the?next?filter
          130????????chain.doFilter(request,?response);
          131
          132????}

          133
          134????/**
          135?????*?Place?this?filter?into?service.
          136?????*?
          137?????*?@param?filterConfig?The?filter?configuration?object
          138?????*?
          139?????*?@uml.property?name="filterConfig"
          140?????*/

          141????public?void?init(FilterConfig?filterConfig)?throws?ServletException?{
          142
          143????????this.filterConfig?=?filterConfig;
          144????????this.encoding?=?filterConfig.getInitParameter("encoding");
          145????????String?value?=?filterConfig.getInitParameter("ignore");
          146????????if?(value?==?null)
          147????????????this.ignore?=?true;
          148????????else?if?(value.equalsIgnoreCase("true"))
          149????????????this.ignore?=?true;
          150????????else?if?(value.equalsIgnoreCase("yes"))
          151????????????this.ignore?=?true;
          152????????else
          153????????????this.ignore?=?false;
          154
          155????}

          156
          157????//?------------------------------------------------------?Protected?Methods
          158
          159
          160????/**
          161?????*?Select?an?appropriate?character?encoding?to?be?used,?based?on?the
          162?????*?characteristics?of?the?current?request?and/or?filter?initialization
          163?????*?parameters.??If?no?character?encoding?should?be?set,?return
          164?????*?<code>null</code>.
          165?????*?<p>
          166?????*?The?default?implementation?unconditionally?returns?the?value?configured
          167?????*?by?the?<strong>encoding</strong>?initialization?parameter?for?this
          168?????*?filter.
          169?????*
          170?????*?@param?request?The?servlet?request?we?are?processing
          171?????*/

          172????protected?String?selectEncoding(ServletRequest?request)?{
          173
          174????????return?(this.encoding);
          175
          176????}

          177
          178
          179}

          180

          web.xml 中的設置
          ?1?<!--?編碼轉換過濾器??-->
          ?2?<filter>
          ?3??<filter-name>Encoding</filter-name>
          ?4??<filter-class>com.zeroidea.common.SetCharacterEncodingFilter</filter-class>
          ?5??<init-param>
          ?6???<param-name>encoding</param-name>
          ?7???<param-value>GBK</param-value>
          ?8??</init-param>
          ?9?</filter>
          10?
          11?<!--?映射過濾器-->
          12?<filter-mapping>
          13??<filter-name>Encoding</filter-name>
          14??<url-pattern>*.jsp</url-pattern>
          15?</filter-mapping>
          16?<filter-mapping>
          17??<filter-name>Encoding</filter-name>
          18??<url-pattern>*.do</url-pattern>
          19?</filter-mapping>

          posted on 2006-11-30 16:32 一手的小窩窩 閱讀(1915) 評論(1)  編輯  收藏 所屬分類: JAVA

          評論:
          # re: STRUTS 字符編碼處理過濾器[未登錄] 2007-12-03 17:03 | shawn
          謝謝

          找了很多都有問題
            回復  更多評論
            
          主站蜘蛛池模板: 利川市| 安徽省| 周口市| 启东市| 九江县| 济南市| 连州市| 安西县| 镇远县| 高雄县| 介休市| 平湖市| 延吉市| 满洲里市| 遂昌县| 白城市| 鲜城| 冕宁县| 美姑县| 隆安县| 上高县| 宣化县| 墨玉县| 贵港市| 灵山县| 滦南县| 城口县| 赤峰市| 湘阴县| 清原| 连城县| 漾濞| 武义县| 远安县| 石屏县| 吉木萨尔县| 桃园县| 乌什县| 乐东| 博客| 阜康市|