最近还是有很多的人问我一些字符集的问题,今天我就写个最简单的例子来实现字符集的转化,我们用到了filter。 EncodingFilter.javapackage com.util; import javax.servlet.http.HttpServletRequest;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.FilterChain; /** * <p>Title: 字符编码集过滤</p> * * <p>Description:字符编码集过滤 </p> * * <p>Copyright: Copyright (c) 2005</p> * * <p>Company: LEEMENZ</p> * * @author 李国庆 * @version 1.0 */public abstract class EncodingFilter implements Filter{ //构造 public EncodingFilter() { config = null; targetEncoding = "ASCII"; } /** *初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。 */ public void init(FilterConfig config) throws ServletException { this.config = config; targetEncoding = config.getInitParameter("encoding"); } //销毁过滤器 public void destroy() { config = null; targetEncoding = null; } /** *进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。 */ public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) srequest; request.setCharacterEncoding(targetEncoding); sresponse.setContentType("text/html;charset=UTF-8");//这里就是你要设置的字符集要改变就改这里。 chain.doFilter(srequest, sresponse); ///派发请求 } private FilterConfig config; private String targetEncoding;} 下面添加到web.xml中: <filter> <filter-name>EncodingFilter</filter-name> <filter-class>com.util.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> //这里是过滤本域下的所有页面 </filter-mapping> 这样处理的话基本上就可以解决问题了。

评论