2012-01-18 21 views
5

Jeśli muszę ustawić tego samego kodowania dla wszystkich aplikacji wdrożonych w tomcat przykład mogę edytować server.xml i dodać sekcję takiego:Jak skonfigurować URIEncoding dla pewnej aplikacji internetowych?

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

Czy istnieje sposób aby określić kodowanie dla pewnej aplikacji? (Być może w swojej web.xml lub gdzieś indziej)?

Odpowiedz

2

O ile wiem web.xml nie zezwala na to, co chcesz, więc sugeruję następujące sposoby.

  1. zestaw go na stronie (na przykład JSP <%@page pageEncoding="UTF-8" %>)
  2. filtrów używa protokołu HTTP ustawione kodowanie. W tym przypadku nie trzeba ustawić go dla każdej strony osobno.
  3. Jeśli używasz ramy internetowych starają się korzystać z narzędzi jakie oferuje. Na przykład dla Struts można określić kodowanie w definicji szablonu.
5

Jeśli używasz MVC wiosny, można użyć CharacterEncodingFilter w web.xml tak:

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

Jeśli nie, trzeba napisać filtr, który robi coś takiego:

httpRequest.setCharacterEncoding("UTF-8") 

EDYTOWANIE:

You Potrzebujesz określić useBodyEncodingForURI="true" w Tomcat 5+ dla tego filtra, aby były skuteczne:

<Connector port="8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    useBodyEncodingForURI="true" /> 
Powiązane problemy