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

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

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

    Kimi's NutShell

    我荒廢的今日,正是昨日殞身之人祈求的明日

    BlogJava 新隨筆 管理
      141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks

    使用filter來(lái)改變r(jià)equest的編碼.

    當(dāng)沒(méi)有指定request的編碼的時(shí)候,從客戶端得到的數(shù)據(jù)是iso-8859-1編碼的(request.getParameter()得到傳遞的參數(shù)值);
    但是我們?cè)趺磥?lái)改變r(jià)equest的編碼呢?


    方法有很多種!


    比如:在getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);之前修改


    request的編碼,那么在jsp/jsptoserv/hello.jsp中得到的參數(shù)值就是制定的編碼的字符。


    本文我們使用Filter來(lái)修改request的編碼

    1)首先編寫filter類:
    package myFilter;
    import java.io.IOException;
    import javax.servlet.*;
    public class ChangeCharsetFilter implements Filter {
    protected String encoding = null;/////要制定的編碼,在web.xml中配置
    protected FilterConfig filterConfig = null;
    public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws IOException, ServletException {
    if (request.getCharacterEncoding() == null){
    ?String encoding = getEncoding();////得到指定的編碼名字
    ?if (encoding != null)
    ?request.setCharacterEncoding(encoding);////設(shè)置request的編碼
    ?}
    chain.doFilter(request, response);///有機(jī)會(huì)執(zhí)行下一個(gè)filter
    }
    ?public void init(FilterConfig filterConfig) throws ServletException {
    ?this.filterConfig = filterConfig;
    this.encoding = filterConfig.getInitParameter("encoding");///得到在web.xml中配置的編碼
    ?}
    ?protected String getEncoding() {
    ?return (this.encoding);///得到指定的編碼
    }

    }

    2。編輯web.xml文件
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    ? PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    ? "<web-app>
    <filter>
    <filter-name>SetCharacterEncoding</filter-name>
    ?<filter-class>myFilter.ChangeCharsetFilter </filter-class>
    ?<init-param>
    ?<param-name>encoding</param-name>
    <param-value>GB2312</param-value>//////指定編碼為GB2312
    </init-param>
    ?</filter>
    <filter-mapping>
    ?<filter-name>SetCharacterEncoding</filter-name>
    <url-pattern>/*</url-pattern>////////對(duì)于所有的request改變其編碼
    </filter-mapping>
    </web-app>
    ///
    3。寫一個(gè)a.jsp


    <%@ page contentType="text/html; charset=GB2312" %>
    <html>
    <head></head>
    <body>
    <%
    String name=request.getParameter("name");///本來(lái)這里得到字符是iso-8859-1編碼的,不能直接


    在Console中輸出的,但是現(xiàn)在改變了request的編碼方式,此時(shí)的name的編碼是GB2312,所以能正確在Console中顯示的。

    System.out.println(name);


    %>
    <form action="a.jsp" method="post">
    <input type="text" name="name">
    <input type="submit">
    </form>
    <%=name%>
    </body>
    </html>


    完!


    關(guān)于中文處理的問(wèn)題就寫這些了!


    評(píng)論

    # re: 通過(guò)filter類對(duì)get方式上來(lái)的中文進(jìn)行統(tǒng)一編碼處理 2008-02-16 17:16 aqiu
    被你捷足先登了,前段時(shí)間剛看的  回復(fù)  更多評(píng)論
      

    # re: 通過(guò)filter類對(duì)get方式上來(lái)的中文進(jìn)行統(tǒng)一編碼處理[未登錄](méi) 2008-02-18 08:42 Kimi
    嘿嘿  回復(fù)  更多評(píng)論
      

    主站蜘蛛池模板: 亚洲乱码国产乱码精品精| 亚洲制服中文字幕第一区| 亚洲中文字幕一二三四区| 久视频精品免费观看99| 久久精品国产亚洲网站| 成人久久免费网站| 亚洲成a人片在线观看无码专区| 一区二区三区免费精品视频| 亚洲中文字幕无码专区| 一区二区3区免费视频| 国产亚洲精品自在线观看| 国产成人无码区免费网站| 亚洲国产精品国自产拍电影| 最好看最新的中文字幕免费| 亚洲a级在线观看| 成人毛片18女人毛片免费视频未| 亚洲 另类 无码 在线| 免费中文字幕视频| 亚洲宅男天堂在线观看无病毒| 玖玖在线免费视频| 亚洲福利电影一区二区?| 在线A级毛片无码免费真人| 国产亚洲Av综合人人澡精品| 亚洲无码视频在线| 午夜爽爽爽男女免费观看影院| 亚洲另类自拍丝袜第1页| 青草草在线视频永久免费| 特级毛片A级毛片100免费播放| 亚洲乱亚洲乱妇无码麻豆| 3d成人免费动漫在线观看| 亚洲中文字幕久久无码| 亚洲伊人久久综合中文成人网| 99久久精品免费精品国产| 亚洲日韩精品无码专区加勒比| 亚洲不卡AV影片在线播放| 免费国产成人午夜在线观看| 亚洲综合av一区二区三区不卡 | 免费观看的毛片大全| 狼人大香伊蕉国产WWW亚洲| 亚洲人成人一区二区三区| 无码日韩人妻av一区免费|