Spring mvc filter не вступает в силу - PullRequest
0 голосов
/ 05 июня 2018

Я учусь SpringMVC.Я использую версию 4.2.5. ВЫПУСК.Фильтр, который я настраиваю в web.xml, похоже, не работает

Сервер : Tomcat 7

Проблема : при использовании GET метод передачи китайских параметров, даже если я настроил фильтр для преобразования кодировки UTF-8, но полученная строка все еще искажена

web.xml:

<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>

Я считаю,моя конфигурация не неправильная

Controller:

@RequestMapping(value = "/user/info", method = RequestMethod.GET)
public String getInfo(HttpServletRequest request,
                      @RequestParam("username") String username, Model model) {

    UserInfo userInfo = new UserInfo(username, "xxx", "xxx");
    Logger.i(userInfo.toString());
    model.addAttribute("info", userInfo);
    return "user/info";
}

Когда я передаю китайские параметры, информация, напечатанная консолью, искажается и искажается, чтобы вернуться на передний план,И request.getCharacterEncoding() возврат - "UTF-8"

Но когда я использую:

try {
    username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

Он может отображаться нормально.

Поэтому я изменил кодировку Tomcat по умолчаниюи изменил его на UTF-8.После этого, даже если я не выполняю транскодирование в коде, я могу получить правильные параметры.

Вопрос : Поэтому я очень озадачен тем, что фильтр не действует.

Я хотел бы выразить мою сердечную благодарность за ваш энтузиазм.Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Вы пытались настроить Tomcat server.xml?Попробуйте установить атрибут URIEncoding="UTF-8" для компонента Connector:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           URIencoding="UTF-8"
           redirectPort="8443" />

Более подробную информацию можно получить здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...