Rising Sun

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks
          filter的用法,的確是比較有擴展性的一種方法...可以通過filter結合讀取web.xml中的filter參數來完成一系列的動作,做法如下:

          首先,實現javax.servlet.Filter接口,編寫一個處理request編碼的過濾器類...

          package?tutorial.struts.filter;
          import?javax.servlet.Filter;
          import?javax.servlet.FilterConfig;
          import?javax.servlet.ServletException;
          import?javax.servlet.ServletRequest;
          import?javax.servlet.ServletResponse;
          import?javax.servlet.FilterChain;
          import?java.io.IOException;
          public?class?SetCharacterEncodingFilter?implements?Filter?{
          ??protected?FilterConfig?filterConfig;
          ??protected?String?encodingName;
          ??protected?boolean?enable;
          ??public?SetCharacterEncodingFilter()?{
          ????this.encodingName?=?"UTF-8";
          ????this.enable?=?false;
          ??}
          ??public?void?init(FilterConfig?filterConfig)?throws?ServletException?{
          ????this.filterConfig?=?filterConfig;
          ????loadConfigParams();
          ??}
          ??private?void?loadConfigParams()
          ?{
          ????//encoding
          ????this.encodingName?=?this.filterConfig.getInitParameter("encoding");
          ????//filter?enable?flag...
          ????String?strIgnoreFlag?=?this.filterConfig.getInitParameter("enable");
          ????if?(strIgnoreFlag.equalsIgnoreCase("true"))
          ?{
          ??????this.enable?=?true;
          ????}
          ?else
          ?{
          ??????this.enable?=?false;
          ????}
          ??}
          ??public?void?doFilter(ServletRequest?request,?ServletResponse?response,
          ???????????????????????FilterChain?chain)?throws?IOException,?ServletException
          ?{
          ????if(this.enable)?
          {
          ??????request.setCharacterEncoding(this.encodingName);
          ????}
          ????chain.doFilter(request,?response);
          ??}
          ??public?void?destroy()
          ?{
          ??}
          }
          ?

          然后,需要在web.xml中注冊我們的過濾器類:

          ??<filter>
          ????<filter-name>Set?Character?Encoding</filter-name>
          ????<filter-class>tutorial.struts.filter.SetCharacterEncodingFilter</filter-class>
          ????<init-param>
          ??????<param-name>encoding</param-name>
          ??????<param-value>UTF-8</param-value>
          ????</init-param>
          ????<init-param>
          ??????<param-name>enable</param-name>
          ??????<param-value>true</param-value>
          ????</init-param>
          ??</filter>
          ??<filter-mapping>
          ????<filter-name>Set?Character?Encoding</filter-name>
          ????<servlet-name>Action?Servlet</servlet-name>
          ??</filter-mapping>
          ??<filter-mapping>
          ????<filter-name>Set?Character?Encoding</filter-name>
          ????<servlet-name>Faces?Servlet</servlet-name>
          ??</filter-mapping>
          ?

          這樣,任何通過Struts,或是JSF的Controller?Servlet處理的request,都會在過濾器中先行處理,才把控制權交還給Struts或是JSF,而且Filter中有一個Process?Chain的概念,是一個很吸引人的東東~~!
          posted on 2006-07-27 15:14 brock 閱讀(370) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 始兴县| 革吉县| 陆丰市| 正宁县| 临夏市| 昌邑市| 南江县| 曲周县| 全州县| 赫章县| 合水县| 贵南县| 页游| 乌鲁木齐市| 读书| 宣化县| 广平县| 江安县| 丰城市| 长春市| 沙河市| 潞城市| 平南县| 利川市| 图们市| 阳高县| 周口市| 阿拉尔市| 渝中区| 闸北区| 克拉玛依市| 城固县| 苍山县| 独山县| 陈巴尔虎旗| 错那县| 曲沃县| 图们市| 通许县| 胶州市| 乐至县|