<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    午夜拍鍵驚奇
    子夜 編程 代碼與我同在
    posts - 48,comments - 118,trackbacks - 79
    相信很多朋友在使用JSP/Servlet等技術進行頁面編程的時候都會或多或少地遇到亂碼問題。解決的方法有很多,比較常見的是手動對所有可能包含中文的字符串進行轉碼:

    String latin = ;
    String gbk 
    = new String(latin.getBytes("iso-8859-1"),"gbk");

    這個方法過去我也比較常用,的確有效,但很累贅耶,絲毫沒有模式之美,有沒有更優雅的方法呢?如果你和我一樣有疑慮的話,可以考慮使用FilterServlet:

     1import java.io.*;
     2import javax.servlet.*;
     3import javax.servlet.http.*;
     4
     5import org.apache.log4j.*;
     6
     7public class CharsetFilter
     8    extends HttpServlet implements Filter{
     9  private static Logger logger = Logger.getLogger("Filter servlet");
    10
    11  public void init(FilterConfig filterConfig)
    12      throws ServletException{
    13  }

    14
    15  public void doFilter(ServletRequest request,ServletResponse response,
    16      FilterChain filterChain){
    17    if(request != null){
    18      String charset = request.getCharacterEncoding();
    19      if(charset == null || !charset.equalsIgnoreCase("gbk"))
    20        try{
    21          request.setCharacterEncoding("GBK");
    22        }

    23        catch(UnsupportedEncodingException ex){
    24          logger.warn(ex.getMessage());
    25        }

    26    }

    27    try{
    28      filterChain.doFilter(request,response); // 遞交責任鏈下一環
    29    }

    30    catch(Exception ex){
    31      logger.error(ex.getMessage());
    32    }

    33  }

    34
    35  public void destroy(){
    36  }

    37}

    38

    FilterServlet內部應該使用責任鏈(Chain of Responsibility)實現,在這里我們把對字符串的轉碼做為責任鏈中的一環,從上一環拿到request,處理后交給鏈的下一環。另外需要在web.xml里做些配置:

    <filter>
      
    <filter-name>charsetfilter</filter-name>
      
    <filter-class>pqp.servlet.CharsetFilter</filter-class>
    </filter>
    <filter-mapping>
      
    <filter-name>charsetfilter</filter-name>
      
    <url-pattern>/*</url-pattern>
      
    <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

    其中“REQUEST”指定了filter攔截的類型,有REQUEST、FORWARD、ERROR和INCLUDE,可組合選擇,一般選REQUEST。全部設置好后重新打包、部署,這樣Servlet就可以自動把所有的request轉換為GBK的字符集了,是不是很方便?但在這里加了filter后對性能方面的影響未知,大家可以討論一下。
    posted on 2005-11-04 19:42 ^ Mustang ^ 閱讀(1781) 評論(0)  編輯  收藏 所屬分類: Java 點滴
    主站蜘蛛池模板: 国产一级淫片a视频免费观看| 国产92成人精品视频免费| 国产成人青青热久免费精品| 亚洲伊人久久大香线蕉AV| 永久免费av无码网站韩国毛片 | 成年人性生活免费视频| 亚洲制服在线观看| 最近中文字幕mv免费高清视频7| 亚洲色精品VR一区区三区| 免费大香伊蕉在人线国产| 免费国产黄网站在线观看动图| 亚洲国产精品自产在线播放 | 亚洲色图国产精品| 亚洲精品视频在线观看免费| 亚洲一区二区三区高清视频| 宅男666在线永久免费观看| 免费高清A级毛片在线播放| 国内精品久久久久久久亚洲| 久久精品国产免费| 日韩亚洲国产高清免费视频| 国产男女猛烈无遮挡免费网站| 曰韩无码AV片免费播放不卡| 久久久久亚洲精品成人网小说 | 日韩免费高清一级毛片| 亚洲色精品vr一区二区三区| 久久国产色AV免费观看| 亚洲国产AV一区二区三区四区| 亚洲国产一区二区视频网站| 日本免费久久久久久久网站| 亚洲人配人种jizz| 亚洲精品无码久久久久AV麻豆| 久久ww精品w免费人成| 亚洲成a人片在线观看天堂无码 | 久久亚洲精品无码播放| 18pao国产成视频永久免费| 偷自拍亚洲视频在线观看| 亚洲国产美国国产综合一区二区| 成在人线AV无码免费| 国偷自产一区二区免费视频| 日韩亚洲国产高清免费视频| 亚洲产国偷V产偷V自拍色戒|