有时候我们在处理网页中输入中文的时候常常会发生中文乱码的问题,我们可以通过处理请求的类加上以下代码解决这个问题:
servletRequest.setCharacterEncoding("UTF-8");
servletResponse.setCharacterEncoding("UTF-8");
servletResponse.setContentType("text/html;char-set=UTF-8");
然而,当处理请求的类过多的时候,在每个请求类中写一遍上面的代码,是相当繁琐的,这个时候,我们可以使用过滤器来实现步骤的简化。
使用方式如下:
1.编写过滤器
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding("utf-8");
servletResponse.setCharacterEncoding("utf-8");
servletResponse.setContentType("text/html;charset=UTF-8");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
2.注册过滤器
在web.xml文件中添加以下代码:
<filter>
<filter-name>encoding</filter-name>
<filter-class>top.zhang.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
如代码所示,上面的表示过滤类的位置,而下面路径表示此过滤器会处理所有的请求。
以上完成了过滤器的编写与注册,在以后编写处理类的时候便不再需要进行预处理。