java - JSP/GlassFish: cómo configurar la codificación UTF-8 correctamente
servlets character-encoding (1)
Estoy buscando ayuda para obtener todas mis capas en la pila de codificación UTF-8.
Encontré este lindo artículo:
http://www.javapractices.com/topic/TopicAction.do?Id=206
describiendo los 3 lugares que necesito preocuparme por la codificación. Dado que mi (1) base de datos Oracle está configurada actualmente en UTF-8, eso deja al (2) navegador y (3) servidor de los que preocuparse.
También encontré este artículo detallado
http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html#JSPServletRequest
lo cual intento seguir a continuación, pero con algunas preguntas nuevas sobre la implementación.
Para abordar el navegador, me aseguré de incluir lo siguiente en la parte superior de cada página JSP:
<%@page pageEncoding="UTF-8"%>
(Para referencia, ver aquí ).
Para dirigirme al servidor, me aseguré de incluir la siguiente línea en el servlet de Java y las páginas JSP antes de emitir una declaración request.getParameter()
o request.getAttribute()
:
request.setCharacterEncoding("UTF-8");
Dado que estoy usando GlassFish 3.1.2, entiendo que no usa UTF-8 de forma predeterminada, así que tengo que configurarlo manualmente de alguna manera.
He visto muchos sitios web que hablan de un archivo llamado glassfish-web.xml
. ¿Esta parte de la instalación normal de Glassfish? No sé dónde encontrarlo. He estado usando el archivo web.xml
en mi carpeta WEB-INF
para mi aplicación web. ¿Podría alguien ayudarme a determinar si necesito modificar este archivo web.xml
, o necesito ubicar o crear un nuevo archivo llamado glassfish-web.xml
, para configurar la codificación de glassfish?
Mi archivo web.xml
comienza con:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
...
Para la solicitud JSP / servlet, incluyo la siguiente línea en el archivo web.xml
<parameter-encoding default-charset="UTF-8"/>
¿Está bien ponerlo en el archivo web.xml
? O, ¿necesita ir en algún archivo glassfish-web.xml
?
Para la respuesta JSP / servlet, pongo lo siguiente en mi archivo web.xml
(vea la respuesta aceptada aquí ):
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
Supongo que estas líneas solo se insertan entre <web-app>
y </web-app>
. Pero, avíseme si deberían ir dentro de otro descriptor (como <glassfish-web-app>
y </glassfish-web-app>
)?
También puse lo siguiente en la sección JSP <head>
:
<meta http-equiv="content-type" content="text/html; charset=utf-8">
Referencias útiles:
https://stackoverflow.com/tags/servlet-filters/info
https://wikis.oracle.com/display/GlassFish/FaqHttpRequestParameterEncoding
glassfish-web.xml
es un archivo que puede crear en su carpeta WEB-INF
. Para Glassfish 3.x tiene que parecerse a esto:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<jsp-config>
</jsp-config>
<parameter-encoding default-charset="UTF-8" />
</glassfish-web-app>
Y tiene razón, la configuración de codificación de parámetros debe estar en este archivo y no en el archivo web.xml
:)
Ver también: