<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來改變r(jià)equest的編碼.

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


    方法有很多種!


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


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


    本文我們使用Filter來修改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>////////對于所有的request改變其編碼
    </filter-mapping>
    </web-app>
    ///
    3。寫一個(gè)a.jsp


    <%@ page contentType="text/html; charset=GB2312" %>
    <html>
    <head></head>
    <body>
    <%
    String name=request.getParameter("name");///本來這里得到字符是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)于中文處理的問題就寫這些了!


    評論

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

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

    主站蜘蛛池模板: 亚洲色精品aⅴ一区区三区| 久久久久亚洲精品影视| 亚洲AV永久无码精品网站在线观看| 成人免费福利电影| 日本视频免费观看| 国产成A人亚洲精V品无码| 免费成人福利视频| 看成年女人免费午夜视频| 亚洲av综合色区| 丁香花在线观看免费观看| yellow视频免费看| 91亚洲精品自在在线观看| 亚洲AV永久无码精品一区二区国产 | 大香人蕉免费视频75| 日韩久久无码免费毛片软件| 在线观看亚洲AV日韩A∨| 色噜噜AV亚洲色一区二区| 91频在线观看免费大全| 一区二区免费电影| 深夜福利在线视频免费| 亚洲国产精品综合久久久| 国产亚洲精品AA片在线观看不加载| 1000部无遮挡拍拍拍免费视频观看 | 国产精品美女久久久免费| 亚洲天堂2017无码中文| 国产三级在线观看免费| a拍拍男女免费看全片| 最好看最新的中文字幕免费| 校园亚洲春色另类小说合集| 亚洲va在线va天堂va不卡下载| 在线a亚洲v天堂网2019无码| 国产成人精品日本亚洲专区| 嫩草影院在线免费观看| 久久久久久国产精品免费免费| 野花高清在线观看免费3中文| a级精品九九九大片免费看| 亚洲av综合av一区二区三区| 亚洲国产情侣一区二区三区| 亚洲国产av高清无码| 亚洲AV无码专区在线亚| 国产精品亚洲成在人线|