中文轉碼Filter

          在Struts中經常會碰到中文轉碼的問題,最簡單的辦法就是直接寫一個ServletFilter
          代碼如下:
          ChineseFilter.class


          import java.io.IOException;
          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class ChineseFilter extends HttpServlet implements Filter {

          ?private FilterConfig filterConfig;
          ???? //Handle the passed-in FilterConfig
          ???? public void init(FilterConfig filterConfig) throws ServletException {
          ???????? this.filterConfig = filterConfig;
          ???? }
          ???? //Process the request/response pair
          ???? public void doFilter(ServletRequest request, ServletResponse response,
          ????????????????????????? FilterChain filterChain) {
          ???????? try {
          ???????? ?
          ???????? ?String encoding=filterConfig.getInitParameter("encoding");//從WEB.xml配置文件中取出參數,這樣我們可以通過配置修改編碼格式.??????????????????
          ???????????? request.setCharacterEncoding(encoding);//設置請求的編碼格式
          ???????????? filterChain.doFilter(request, response);
          ???????? } catch (ServletException sx) {
          ???????????? filterConfig.getServletContext().log(sx.getMessage());
          ???????? } catch (IOException iox) {
          ???????????? filterConfig.getServletContext().log(iox.getMessage());
          ???????? }
          ???? }

          ???? //Clean up resources
          ???? public void destroy() {
          ???? }

          ??protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
          ???// TODO Auto-generated method stub
          ???super.doGet(arg0, arg1);??
          ??}

          ??protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
          ???// TODO Auto-generated method stub
          ???super.doPost(arg0, arg1);???
          ??}?
          }

          寫完過濾器剩下的就是配置Web.xml了

          ?<filter>
          ? <filter-name>ChineseFilter</filter-name>
          ? <filter-class>com.blog.filter.ChineseFilter</filter-class>
          <init-param>
          ??? <param-name>encoding</param-name>
          ??? <param-value>GBK</param-value> 配置編碼格式,可以配置成你想要的編碼(GBK,bg-2312)

          </init-param>
          ? </filter>
          ?? <filter-mapping>
          ??? <filter-name>ChineseFilter</filter-name>
          ??? <url-pattern>/*</url-pattern>
          ? </filter-mapping>

          好了,簡單的Filter就完成了.當然也有現成的包,比如你用Struts+Spring的話,那Spring中就有現成的轉碼過濾器,我們只要在WEB.xml中配置一下就OK了.

          <filter>
          <filter-name>encodingFilter</filter-name>
          ?<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          ?<init-param>
          ?<param-name>encoding</param-name>
          . <param-value>GBK</param-value>
          ?</init-param>
          ?</filter>
          <filter-mapping>
          ?<filter-name>encodingFilter</filter-name>
          ?<url-pattern>/*</url-pattern>
          ?</filter-mapping>

          posted on 2006-07-08 15:21 Redish 閱讀(829) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 怀柔区| 潮安县| 东丽区| 瑞昌市| 惠水县| 平原县| 新巴尔虎右旗| 彰武县| 仲巴县| 饶河县| 弥勒县| 乌拉特中旗| 贡山| 绵阳市| 荃湾区| 凤台县| 宜章县| 泸溪县| 都江堰市| 涞水县| 海淀区| 武川县| 永和县| 星座| 河东区| 永善县| 简阳市| 潼南县| 乐昌市| 漯河市| 成武县| 罗山县| 当阳市| 外汇| 舞阳县| 棋牌| 文成县| 九龙县| 涿鹿县| 富民县| 绥棱县|