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

    主站蜘蛛池模板: 久久亚洲精品无码网站| 亚洲高清视频在线播放| 亚洲AV无码乱码在线观看| 国产一级高清视频免费看| 亚洲精品视频久久久| 亚洲日本在线观看| 亚洲中文字幕久久精品无码A | 最近2019中文字幕免费大全5| 精品国产污污免费网站aⅴ| 免费高清小黄站在线观看| 亚洲人成色7777在线观看不卡| 免费在线观看一区| 国产免费的野战视频| 精品国产日韩亚洲一区| 亚洲精品国产情侣av在线| 午夜在线亚洲男人午在线| 人妻无码一区二区三区免费| 国产成人3p视频免费观看| 亚洲色偷偷av男人的天堂| 一本岛高清v不卡免费一三区| 亚洲Av无码专区国产乱码DVD| 亚洲精品国产精品| 中文字幕亚洲免费无线观看日本 | 国产免费人成视频尤勿视频| 美女视频黄免费亚洲| 亚洲国产高清国产拍精品| 亚洲av午夜成人片精品电影| 久久久久久免费一区二区三区| 四虎影视免费在线| 亚洲一卡二卡三卡| 久久国产精品免费看| 亚洲日韩v无码中文字幕| 亚洲av中文无码字幕色不卡| 国产亚洲精品精品国产亚洲综合| 久久免费视频99| 亚洲1区2区3区精华液| 亚洲国产综合无码一区| 国产V片在线播放免费无码| 免费国产a国产片高清网站| 亚洲日韩一区精品射精| 西西大胆无码视频免费|