您的位置:首页 > 其它

Serlvet中文乱码问题过滤器解决方法

2012-05-08 09:26 369 查看
初学者中学习Serlvet时,经常遇到中文乱码的问题,然后就会上网查,虽然网上也有其他的解决方法,但是我还是推荐采用过滤器的方式处理中文乱码的问题,至于过滤器的实现原理,读者可以参考网上的其他资料,我在这里就不要详述了。

要使用过滤器来解决中文乱码问题,首先当然是要有一个过滤器了,编写一个类,继承Filter类,并在doFilter方法中处理中文问题

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class CharacterEncodingFilter implements Filter {

private FilterConfig config;

// 此filter被释放时的回调方法
public void destroy() {

}

public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
//获取Filter中的初始化数据,这里是编码的设置
String encoding = config.getInitParameter("encoding");
if (encoding != null && !encoding.equals("")) {
req.setCharacterEncoding(encoding);
}
chain.doFilter(req, res);

}

@Override
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config = config;
}

}


接着要是过滤器有效,就要在web.xml中配置Filter,配置如下:

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>CharacterEncodingFilter</filter-class>

<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>

</filter>

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


需要注意的是:这里的encoding设置的编码要与你页面的编码一直,因为是网页开发,建议都使用utf-8编码格式。

经过这些步骤之后,就不会有乱码的,希望对初学者有点用处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: