Как настроить URIEncoding для определенного веб-приложения? - PullRequest
5 голосов
/ 18 января 2012

Если мне нужно установить одинаковую кодировку для всех приложений, развернутых в экземпляре tomcat, я могу отредактировать server.xml и добавить следующий раздел:

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

Есть ли способ указать кодировку для определенного приложения? (может в его web.xml или где-то еще)?

Ответы [ 2 ]

5 голосов
/ 18 января 2012

Если вы используете Spring MVC, вы можете использовать CharacterEncodingFilter в 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> 
</filter> 
<filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <servlet-name>my-spring-dispatcher-servlet</servlet-name> 
</filter-mapping>

Если нет, вам нужно написать фильтр, который выполняет что-то вроде:

httpRequest.setCharacterEncoding("UTF-8")

РЕДАКТИРОВАТЬ:

Вам нужно , чтобы указать useBodyEncodingForURI="true" в Tomcat 5 + , чтобы этот фильтр работал:

<Connector port="8081" protocol="HTTP/1.1" 
   connectionTimeout="20000" 
   redirectPort="8443" 
   useBodyEncodingForURI="true" />
2 голосов
/ 18 января 2012

Насколько я знаю, web.xml не разрешает то, что вы хотите, поэтому я бы предложил следующие способы:

  1. установить его на странице (например, для JSP <%@page pageEncoding="UTF-8" %>)
  2. Используйте HTTP-фильтр для установки кодировки.В этом случае вам не нужно устанавливать его для каждой страницы отдельно.
  3. Если вы используете веб-фреймворк, попробуйте использовать инструменты, которые он предоставляет.Например, для Struts вы можете определить кодировку в определении шаблона.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...