可以使用Filter过滤器将所有的请求与响应设置为相应的编码。
Filter类:
public class EncodingFilter implements Filter {
private String encoding = "UTF-8"; // 默认编码UTF-8
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 如果用户配置了编码,则将encoding设置为用户编码
if (filterConfig.getInitParameter("ENCODING") != null) {
encoding = filterConfig.getInitParameter("ENCODING");
}
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 设置请求与相应的编码并放行
servletRequest.setCharacterEncoding(encoding);
servletResponse.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
encoding = null;
}
}
web.xml配置:
<filter>
<filter-name>Encoding</filter-name>
<filter-class>EncodingFilter</filter-class>
<init-param>
<param-name>ENCODING</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>