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

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

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

    隨筆 - 4  文章 - 10  trackbacks - 0
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    相信很多朋友在使用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 2007-08-16 14:17 冬天出走的豬 閱讀(235) 評論(0)  編輯  收藏 所屬分類: jsp實例

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


    網站導航:
     
    主站蜘蛛池模板: 99爱免费观看视频在线| 国产成人免费a在线视频色戒| 182tv免费观看在线视频| 毛片免费在线视频| 亚洲色偷偷综合亚洲AVYP| 亚洲一级在线观看| 国产精品免费一区二区三区| 亚洲一区免费视频| 国产啪亚洲国产精品无码| 日本亚洲免费无线码| 久久久久免费看黄a级试看| 免费不卡中文字幕在线| 亚洲综合区图片小说区| 香蕉免费一级视频在线观看| 麻豆国产精品免费视频| 亚洲福利电影一区二区?| 又粗又大又黑又长的免费视频 | 男女一边摸一边做爽的免费视频| 亚洲成av人片在线观看天堂无码| 亚洲成人福利在线| A片在线免费观看| 亚洲 另类 无码 在线| 亚洲熟女综合一区二区三区| 57pao一国产成永久免费| 亚洲Av无码一区二区二三区| 日韩免费高清视频网站| 亚洲一线产品二线产品| 亚洲国产精品一区二区九九 | 国产L精品国产亚洲区久久| 亚洲爆乳少妇无码激情| 中文字幕av无码无卡免费| 亚洲视频免费观看| 91精品手机国产免费| 亚洲国产精品久久久久久| 中文字幕视频在线免费观看| 亚洲AV无码乱码在线观看| 国产拍拍拍无码视频免费| 亚洲精品无码mv在线观看网站| 人碰人碰人成人免费视频| 亚洲第一黄片大全| 日韩插啊免费视频在线观看|