首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

filter为什么不起作用?该怎么解决

2012-02-19 
filter为什么不起作用?我写了一个filter来过滤JSP页面的中文编码问题单步调试的时候程序已经跳入filter了;

filter为什么不起作用?
我写了一个filter来过滤JSP页面的中文编码问题
单步调试的时候程序已经跳入filter了;但JSP页面上的中文数据传入BEAN的时候还是出现乱码问题;
我的JSP页面上设置了文件头:
<%@page   contentType= "text/html;   charset=GBK "%>
也面上的中文是正常显示的,就是在传值的时候出现乱码
我的filter代码如下:
package   com.wmf.struts;
//Decompiled   by   Jad   v1.5.7g.   Copyright   2000   Pavel   Kouznetsov.
//Jad   home   page:   http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
//Decompiler   options:   packimports(3)   fieldsfirst   ansi  
//Source   File   Name:       Unknown   Source

import   java.io.IOException;
import   javax.servlet.*;
import   javax.servlet.http.HttpServlet;
import   javax.servlet.http.HttpServletResponse;

public   class   servfilter   extends   HttpServlet   implements   Filter   {
    private   FilterConfig   filterConfig;
    //Handle   the   passed-in   FilterConfig
    public   void   init(FilterConfig   filterConfig)   {
        this.filterConfig   =   filterConfig;
    }
    //Process   the   request/response   pair
    public   void   doFilter(ServletRequest   request,   ServletResponse   response,   FilterChain   filterChain)   {
        try   {
            response.setCharacterEncoding( "GBK ");
            request.setCharacterEncoding( "GBK ");
            response.setContentType( "text/html;   charset=GBK ");
                    ((HttpServletResponse)response).setHeader( "Pragma ", "No-cache ");
                    ((HttpServletResponse)response).setHeader( "Cache-Control ", "no-cache ");
                    ((HttpServletResponse)response).setHeader( "Expires ", "0 ");
            filterChain.doFilter(request,   response);
        }
        catch(ServletException   sx)   {
            filterConfig.getServletContext().log(sx.getMessage());
        }
        catch(IOException   iox)   {
            filterConfig.getServletContext().log(iox.getMessage());
        }
    }
    //Clean   up   resources
    public   void   destroy()   {
    }
}

web.xml里面的配置如下:
<filter>
        <filter-name> servfilter </filter-name>
        <filter-class> com.wmf.struts.servfilter </filter-class>
        <init-param>
                <param-name> encoding </param-name>
                <param-value> GBK </param-value>
        </init-param>
    </filter>
    <filter-mapping>


        <filter-name> servfilter </filter-name>
        <url-pattern> /* </url-pattern>
    </filter-mapping>

不知道为什么filter没起作用
请各位指点。。。


[解决办法]
也面上的中文是正常显示的,就是在传值的时候出现乱码?
----------------------------------------------------
你的Filter 应该没什么问题

传值出现中文乱码你使用的是tomcat的吧
是url传值中文乱码吧
先把 server.xml 中的 <Connector 中加入 URIEncoding= "GBK "
url传中文最好先转换下编码
URLEncoder.encode( "汉字 ", "GBK ")
接受后在解码
URLDecoder.decode( "汉字 ", "GBK ");
[解决办法]
要是tomcat,则编码问题建议统一用utf-8,我们就一直使用的很好
需要在server.xml里面的connector里面务必设置如下参数:

URIEncoding= "UTF-8 " useBodyEncodingForURI= "true "

热点排行