Я учусь 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.После этого, даже если я не выполняю транскодирование в коде, я могу получить правильные параметры.
Вопрос : Поэтому я очень озадачен тем, что фильтр не действует.
Я хотел бы выразить мою сердечную благодарность за ваш энтузиазм.Спасибо!