<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年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    相信很多朋友在使用JSP/Servlet等技術(shù)進行頁面編程的時候都會或多或少地遇到亂碼問題。解決的方法有很多,比較常見的是手動對所有可能包含中文的字符串進行轉(zhuǎn)碼:

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

    這個方法過去我也比較常用,的確有效,但很累贅耶,絲毫沒有模式之美,有沒有更優(yōu)雅的方法呢?如果你和我一樣有疑慮的話,可以考慮使用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); // 遞交責(zé)任鏈下一環(huán)
    29    }

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

    33  }

    34
    35  public void destroy(){
    36  }

    37}

    38

    FilterServlet內(nèi)部應(yīng)該使用責(zé)任鏈(Chain of Responsibility)實現(xiàn),在這里我們把對字符串的轉(zhuǎn)碼做為責(zé)任鏈中的一環(huán),從上一環(huán)拿到request,處理后交給鏈的下一環(huán)。另外需要在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。全部設(shè)置好后重新打包、部署,這樣Servlet就可以自動把所有的request轉(zhuǎn)換為GBK的字符集了,是不是很方便?但在這里加了filter后對性能方面的影響未知,大家可以討論一下。
    posted on 2007-08-16 14:17 冬天出走的豬 閱讀(230) 評論(0)  編輯  收藏 所屬分類: jsp實例

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中国黄色免费网站| sihu国产精品永久免费| 亚洲色欲色欲综合网站| 亚洲好看的理论片电影| 国产一级a毛一级a看免费人娇| 啊v在线免费观看| 亚洲gv白嫩小受在线观看| 亚洲一区二区三区免费观看| 亚洲kkk4444在线观看| 性生大片视频免费观看一级| 野花香高清视频在线观看免费| 97视频热人人精品免费| 亚洲精品无码av天堂| 亚洲一区影音先锋色资源| 疯狂做受xxxx高潮视频免费| 日本一区二区免费看| 日韩免费一级毛片| 国产AV无码专区亚洲AVJULIA| 亚洲精品国产高清在线观看| 中文字幕乱码一区二区免费| 午夜国产羞羞视频免费网站| 亚洲剧情在线观看| 久久成人无码国产免费播放| 精品亚洲A∨无码一区二区三区| 91嫩草免费国产永久入口| 成人亚洲性情网站WWW在线观看| 亚洲免费网站在线观看| 成年男女免费视频网站| 亚洲国产精品久久久久久| 毛片免费全部播放无码| 国产亚洲精品xxx| 免费国产黄网站在线观看动图| 韩国免费一级成人毛片| 久久综合亚洲色HEZYO社区| 美女扒开尿口给男人爽免费视频| 四虎成年永久免费网站| 在线观看亚洲专区| 亚洲AV无码国产精品色午友在线| 一二三四在线观看免费高清中文在线观看 | 爱情岛论坛免费视频| 亚洲αv在线精品糸列|