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 "