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. Запуск приложения
Введем русские символы
Получим то, что хотели
Исходные коды
136 thoughts on “Spring MVC — исправление проблем с русской кодировкой. Кодировка передачи параметров формы”
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.
Спасибо, добрый человек.
Спасибо большое
А как прикрутить этот фильтр с помощью аннотаций?
https://javastudy.ru/spring-mvc/review-mvc-angularjs-bootstrap-html5/ В конце есть перевод всего приложения на аннотации. Там же найдете и фильтры.
А возможно это сделать, кофигурируя не через web.xml, а с помощьюб аннотаций в Spring-mvc?
Конечно. На сайте есть несколько статей с программной конфигурацией.