现在的位置: 首页 > 综合 > 正文

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

2013年09月15日 ⁄ 综合 ⁄ 共 1366字 ⁄ 字号 评论关闭

        初学者中学习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编码格式。

经过这些步骤之后,就不会有乱码的,希望对初学者有点用处。

抱歉!评论已关闭.