Вам необходимо настроить фильтр кодировки символов в web.xml
:
<filter>
<filter-name>charsetEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Контейнер сервлетов обрабатывает данные запроса POST как ISO-8859-1, если кодировка запроса не указана, тогда как браузер отправляет форму в кодировке страницы (в вашем случае UTF-8) и не определяет кодировку, поэтому вы нужен фильтр, чтобы указать правильную кодировку запроса.
РЕДАКТИРОВАТЬ: Как правильно упомянуто BalusC, он не охватывает проблемы кодирования с запросами GET. Чтобы исправить это на Tomcat, вам нужно установить URIEncoding="UTF-8"
на <Connector>
в conf/server.xml
.