<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)論
      

    主站蜘蛛池模板: A片在线免费观看| 美国免费高清一级毛片| 亚洲乱码国产乱码精华| 精品多毛少妇人妻AV免费久久| 国产三级电影免费观看| avtt天堂网手机版亚洲| 久久99免费视频| 久久精品夜色噜噜亚洲A∨| 亚洲欧美国产国产一区二区三区 | 久久国产精品一区免费下载| 亚洲综合av永久无码精品一区二区| 四虎精品免费永久免费视频| 久久夜色精品国产亚洲av| 鲁啊鲁在线视频免费播放| 国产无遮挡裸体免费视频 | 在线免费观看亚洲| 国产精品国产亚洲区艳妇糸列短篇| 在线免费观看污网站| 亚洲美女视频免费| 狼友av永久网站免费观看| 亚洲性一级理论片在线观看| 1000部国产成人免费视频| 亚洲欧洲在线观看| 一级毛片在线完整免费观看| 亚洲人成精品久久久久| 国内精品免费久久影院| 亚洲精品你懂的在线观看| 暖暖在线视频免费视频| 蜜芽亚洲av无码精品色午夜| 最近的免费中文字幕视频| 亚洲 日韩 色 图网站| 一二三四免费观看在线电影 | 亚洲大码熟女在线观看| 免费爱爱的视频太爽了| 国产成人精品亚洲一区| 亚洲精品无码AV中文字幕电影网站| 精品亚洲永久免费精品| 亚洲精品国产福利在线观看| 国产无遮挡吃胸膜奶免费看| 国产无遮挡裸体免费视频在线观看 | 中文字幕成人免费视频|