Я вернулся к своему вопросу, который задавал два месяца назад. Теперь я знаю, что решение с использованием фильтра - это не обходной путь, а обычный способ. Просто напишите класс фильтра:
package eu.barbucha.tests;
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 EncodingSettingFilter implements Filter {
private final String enc = "utf-8";
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse resp, FilterChain fc)
throws IOException, ServletException {
request.setCharacterEncoding(enc);
resp.setCharacterEncoding(enc);
fc.doFilter(request, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
И назначить фильтр со всеми URI в файле WEB-INF/web.xml
:
<filter>
<description>Filter setting encoding</description>
<filter-name>enc-filter</filter-name>
<filter-class>eu.barbucha.tests.EncodingSettingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>enc-filter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
Вот и все.