2012-01-18 6 views
5

Se ho bisogno di impostare la stessa codifica per tutte le applicazioni distribuite in un'istanza di Tomcat, posso modificare server.xml e aggiungere una sezione come questa:Come configurare URIEncoding per una determinata applicazione Web?

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

Esiste un modo per specificare la codifica per una certa applicazione? (forse nel suo web.xml o da qualche altra parte)?

risposta

2

Per quanto ne so, web.xml non consente ciò che si desidera, quindi suggerirei i seguenti modi.

  1. set esso per pagina (per esempio per JSP <%@page pageEncoding="UTF-8" %>)
  2. filtro Usa HTTP per impostare la codifica. In questo caso non è necessario impostarlo separatamente per ciascuna pagina.
  3. Se si utilizza il framework Web, provare a utilizzare gli strumenti forniti. Ad esempio per Struts è possibile definire la codifica nella definizione del modello.
5

Se si utilizza Spring MVC, è possibile utilizzare CharacterEncodingFilter in web.xml come questo:

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

In caso contrario, è necessario scrivere un filtro che fa qualcosa di simile:

httpRequest.setCharacterEncoding("UTF-8") 

EDIT:

È c'è bisogno specificare useBodyEncodingForURI="true" in Tomcat 5+ per questo filtro sia efficace:

<Connector port="8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8443" 
    useBodyEncodingForURI="true" /> 
Problemi correlati