Spring MVC — исправление проблем с русской кодировкой. Кодировка передачи параметров формы
При стандартных настройках Spring MVC будет возникать проблема отображения русских символов в представлении. Как это исправить описано в этой статье.
Код приложения будет взят полностью из Spring MVC – Hello World, пример приложения. Передача параметров формы. Если вбить в текстовое поле русские символы, то получим такой результат:
Введенное имя: оÑвдалоÑ;
Введенный пароль: ÑваÑÑва;
Думаю это не то, что вы ожидали.
1. Добавление фильтра для кодировки русских символов в Spring MVC
Код полностью соответствует коду из прошлого приложения, за исключением настроек в web.xml:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  | 
						  <!--Позволяет работать с русскими символами-->     <filter>         <filter-name>encodingFilter</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>         <init-param>             <param-name>forceEncoding</param-name>             <param-value>true</param-value>         </init-param>     </filter>     <filter-mapping>         <filter-name>encodingFilter</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>  | 
					
Необходимо добавить такой фильтр, чтобы символы, которые будут поступать от пользователя перекодировались на лету.
Полный листинг web.xml:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  | 
						<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"          version="3.1">     <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>/WEB-INF/applicationContext.xml</param-value>     </context-param>     <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>     <servlet>         <servlet-name>dispatcher</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>         <load-on-startup>1</load-on-startup>     </servlet>     <servlet-mapping>         <servlet-name>dispatcher</servlet-name>         <url-pattern>*.form</url-pattern>     </servlet-mapping>     <servlet-mapping>         <servlet-name>dispatcher</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>     <!--Позволяет работать с русскими символами-->     <filter>         <filter-name>encodingFilter</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>         <init-param>             <param-name>forceEncoding</param-name>             <param-value>true</param-value>         </init-param>     </filter>     <filter-mapping>         <filter-name>encodingFilter</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping> </web-app>  | 
					
2. Запуск приложения
Введем русские символы
Получим то, что хотели
Исходные коды
6 thoughts on “Spring MVC — исправление проблем с русской кодировкой. Кодировка передачи параметров формы”
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.





Спасибо, добрый человек.
Спасибо большое
А как прикрутить этот фильтр с помощью аннотаций?
https://javastudy.ru/spring-mvc/review-mvc-angularjs-bootstrap-html5/ В конце есть перевод всего приложения на аннотации. Там же найдете и фильтры.
А возможно это сделать, кофигурируя не через web.xml, а с помощьюб аннотаций в Spring-mvc?
Конечно. На сайте есть несколько статей с программной конфигурацией.