- < filtro >
- < nombre-filtro > EncodeFilter </ nombre-filtro >
- < clase de filtro >
- util.general.SetCharacterEncodingFilter
- </ clase-filtro >
- < init-param >
- < param-name > codificación </ param-name >
- < valor- parámetro > EUC_JP </ valor- parámetro >
- </ init-param >
- </ filtro >
- < mapeo de filtros >
- < nombre-filtro > EncodeFilter </ nombre-filtro >
- < patrón-url > / * </ patrón-url >
- </ filter-mapping >
- < servlet >
- < nombre-servlet > índice </ nombre-servlet >
- < archivo-jsp > /index.jsp </ archivo-jsp >
- </ servlet >
- < mapeo de servlet >
- < nombre-servlet > índice </ nombre-servlet >
- < patrón-url > index.html </ patrón-url >
- </ servlet-mapeo >
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.UnavailableException;
- / **
- * <p> Filtro de ejemplo que establece la codificación de caracteres que se utilizará para analizar el
- * solicitud entrante, ya sea incondicionalmente o solo si el cliente no lo hizo
- * especificar una codificación de caracteres. La configuración de este filtro se basa en
- * los siguientes parámetros de inicialización: </p>
- * <ul>
- * <li> <strong> codificación </strong>: la codificación de caracteres que se va a configurar
- * para esta solicitud, ya sea de forma condicional o incondicional basada en
- * el parámetro de inicialización <code> ignore </code>. Este parámetro
- * es obligatorio, por lo que no hay ningún valor predeterminado. </li>
- * <li> <strong> ignorar </strong>: si se establece en "verdadero", cualquier codificación de caracteres
- * especificado por el cliente se ignora y el valor devuelto por el
- * Se establece el método <code> selectEncoding () </code>. Si se establece en "falso,
- * <code> selectEncoding () </code> se llama <strong> solo </strong> si el
- * el cliente aún no ha especificado una codificación. Por defecto, este
- * el parámetro está configurado como "verdadero". </li>
- * </ul>
- *
- * <p> Aunque este filtro se puede utilizar sin cambios, también es fácil
- * subclasificarlo y hacer que el método <code> selectEncoding () </code> sea más
- * inteligente sobre qué codificación elegir, según las características de
- * la solicitud entrante (como los valores de <code> Accept-Language </code>
- * y <code> User-Agent </code> encabezados, o un valor escondido en el actual
- * sesión de usuario. </p>
- *
- * @autor Craig McClanahan
- * @version $ Revisión: 1.2 $ $ Fecha: 2006/12/05 23:48:07 $
- * /
- La clase pública SetCharacterEncodingFilter implementa Filter {
- // ------------------------------------------------ ----- Variables de instancia
- / **
- * La codificación de caracteres predeterminada para establecer para las solicitudes que pasan
- * este filtro.
- * /
- codificación de cadena protegida = nulo ;
- / **
- * El objeto de configuración de filtro con el que estamos asociados. Si este valor
- * es nulo, esta instancia de filtro no está configurada actualmente.
- * /
- FilterConfig protegido filterConfig = null ;
- / **
- * ¿Debería ignorarse una codificación de caracteres especificada por el cliente?
- * /
- protegido booleano ignorar = verdadero ;
- // ------------------------------------------------ --------- Métodos públicos
- / **
- * Ponga este filtro fuera de servicio.
- * /
- public void destroy () {
- esta .encoding = null ;
- este .filterConfig = null ;
- }
- / **
- * Seleccione y configure (si se especifica) la codificación de caracteres que se utilizará para
- * interpretar los parámetros de solicitud para esta solicitud.
- *
- * @param request La solicitud de servlet que estamos procesando
- * @param result La respuesta del servlet que estamos creando
- * @param chain La cadena de filtros que estamos procesando
- *
- * @exception IOException si ocurre un error de entrada / salida
- * @exception ServletException si ocurre un error de servlet
- * /
- public void doFilter (solicitud ServletRequest, respuesta ServletResponse,
- FilterChain cadena)
- lanza IOException, ServletException {
- // Seleccione y establezca condicionalmente la codificación de caracteres que se utilizará
- if (ignorar || (request.getCharacterEncoding () == null )) {
- Cadena de codificación = selectEncoding (solicitud);
- if (codificación! = nulo )
- request.setCharacterEncoding (codificación);
- }
- // Pasar el control al siguiente filtro
- chain.doFilter (solicitud, respuesta);
- }
- / **
- * Ponga este filtro en servicio.
- *
- * @param filterConfig El objeto de configuración del filtro
- * /
- public void init (FilterConfig filterConfig) lanza ServletException {
- this .filterConfig = filterConfig;
- this .encoding = filterConfig.getInitParameter ( "codificación" );
- Valor de cadena = filterConfig.getInitParameter ( "ignorar" );
- si (valor == nulo )
- esto .ignore = verdadero ;
- else if (value.equalsIgnoreCase ( "verdadero" ))
- esto .ignore = verdadero ;
- else if (value.equalsIgnoreCase ( "sí" ))
- esto .ignore = verdadero ;
- más
- esto .ignore = falso ;
- }
- // ------------------------------------------------ ------ Métodos protegidos
- / **
- * Seleccione una codificación de caracteres adecuada para utilizar, según el
- * características de la solicitud actual y / o inicialización del filtro
- * parámetros. Si no se debe establecer una codificación de caracteres, regrese
- * <code> nulo </code>.
- * <p>
- * La implementación predeterminada devuelve incondicionalmente el valor configurado
- * por el parámetro de inicialización <strong> codificación </strong> para este
- * filtro.
- *
- * @param request La solicitud de servlet que estamos procesando
- * /
- protected String selectEncoding (solicitud de ServletRequest) {
- return ( este .encoding);
- }
- }