Codificación de caracteres de servlet

  1.     < filtro >
  2.         < nombre-filtro > EncodeFilter </ nombre-filtro >
  3.         < clase de filtro >
  4.             util.general.SetCharacterEncodingFilter
  5.         </ clase-filtro >
  6.         < init-param >
  7.             < param-name > codificación </ param-name >
  8.             < valor- parámetro > EUC_JP </ valor- parámetro >
  9.         </ init-param >
  10.     </ filtro >
  11.     < mapeo de filtros >
  12.         < nombre-filtro > EncodeFilter </ nombre-filtro >
  13.         < patrón-url > / * </ patrón-url >
  14.     </ filter-mapping >

 

  1.     < servlet >
  2.       < nombre-servlet > índice </ nombre-servlet >
  3.       < archivo-jsp > /index.jsp </ archivo-jsp >
  4.     </ servlet >
  5.     
  6.     < mapeo de servlet >
  7.         < nombre-servlet > índice </ nombre-servlet >
  8.         < patrón-url > index.html </ patrón-url >
  9.     </ servlet-mapeo >

 

  1. import  java.io.IOException;
  2. import  javax.servlet.Filter;
  3. import  javax.servlet.FilterChain;
  4. import  javax.servlet.FilterConfig;
  5. import  javax.servlet.ServletException;
  6. import  javax.servlet.ServletRequest;
  7. import  javax.servlet.ServletResponse;
  8. import  javax.servlet.UnavailableException;
  9. / **
  10.  * <p> Filtro de ejemplo que establece la codificación de caracteres que se utilizará para analizar el
  11.  * solicitud entrante, ya sea incondicionalmente o solo si el cliente no lo hizo
  12.  * especificar una codificación de caracteres. La configuración de este filtro se basa en
  13.  * los siguientes parámetros de inicialización: </p>
  14.  * <ul>
  15.  * <li> <strong> codificación </strong>: la codificación de caracteres que se va a configurar
  16.  * para esta solicitud, ya sea de forma condicional o incondicional basada en
  17.  * el parámetro de inicialización <code> ignore </code>. Este parámetro
  18.  * es obligatorio, por lo que no hay ningún valor predeterminado. </li>
  19.  * <li> <strong> ignorar </strong>: si se establece en "verdadero", cualquier codificación de caracteres
  20.  * especificado por el cliente se ignora y el valor devuelto por el
  21.  * Se establece el método <code> selectEncoding () </code>. Si se establece en "falso,
  22.  * <code> selectEncoding () </code> se llama <strong> solo </strong> si el
  23.  * el cliente aún no ha especificado una codificación. Por defecto, este
  24.  * el parámetro está configurado como "verdadero". </li>
  25.  * </ul>
  26.  *
  27.  * <p> Aunque este filtro se puede utilizar sin cambios, también es fácil
  28.  * subclasificarlo y hacer que el método <code> selectEncoding () </code> sea más
  29.  * inteligente sobre qué codificación elegir, según las características de
  30.  * la solicitud entrante (como los valores de <code> Accept-Language </code>
  31.  * y <code> User-Agent </code> encabezados, o un valor escondido en el actual
  32.  * sesión de usuario. </p>
  33.  *
  34.  * @autor Craig McClanahan
  35.  * @version $ Revisión: 1.2 $ $ Fecha: 2006/12/05 23:48:07 $
  36.  * /
  37. La  clase pública  SetCharacterEncodingFilter  implementa  Filter {
  38.     // ------------------------------------------------ ----- Variables de instancia
  39.     / **
  40.      * La codificación de caracteres predeterminada para establecer para las solicitudes que pasan
  41.      * este filtro.
  42.      * /
  43.      codificación de cadena protegidanulo ;
  44.     / **
  45.      * El objeto de configuración de filtro con el que estamos asociados. Si este valor
  46.      * es nulo, esta instancia de filtro no está configurada actualmente.
  47.      * /
  48.      FilterConfig protegido filterConfig =  null ;
  49.     / **
  50.      * ¿Debería ignorarse una codificación de caracteres especificada por el cliente?
  51.      * /
  52.     protegido  booleano  ignorar =  verdadero ;
  53.     // ------------------------------------------------ --------- Métodos públicos
  54.     / **
  55.      * Ponga este filtro fuera de servicio.
  56.      * /
  57.     public  void  destroy () {
  58.         esta .encoding =  null ;
  59.         este .filterConfig =  null ;
  60.     }
  61.     / **
  62.      * Seleccione y configure (si se especifica) la codificación de caracteres que se utilizará para
  63.      * interpretar los parámetros de solicitud para esta solicitud.
  64.      *
  65.      * @param request La solicitud de servlet que estamos procesando
  66.      * @param result La respuesta del servlet que estamos creando
  67.      * @param chain La cadena de filtros que estamos procesando
  68.      *
  69.      * @exception IOException si ocurre un error de entrada / salida
  70.      * @exception ServletException si ocurre un error de servlet
  71.      * /
  72.     public  void  doFilter (solicitud ServletRequest, respuesta ServletResponse,
  73.                          FilterChain cadena)
  74.     lanza  IOException, ServletException {
  75.         // Seleccione y establezca condicionalmente la codificación de caracteres que se utilizará
  76.         if  (ignorar || (request.getCharacterEncoding () ==  null )) {
  77.             Cadena de codificación = selectEncoding (solicitud);
  78.             if  (codificación! =  nulo )
  79.                 request.setCharacterEncoding (codificación);
  80.         }
  81.     // Pasar el control al siguiente filtro
  82.         chain.doFilter (solicitud, respuesta);
  83.     }
  84.     / **
  85.      * Ponga este filtro en servicio.
  86.      *
  87.      * @param filterConfig El objeto de configuración del filtro
  88.      * /
  89.     public  void  init (FilterConfig filterConfig)  lanza  ServletException {
  90.     this .filterConfig = filterConfig;
  91.         this .encoding = filterConfig.getInitParameter ( "codificación" );
  92.         Valor de cadena = filterConfig.getInitParameter ( "ignorar" );
  93.         si  (valor ==  nulo )
  94.             esto .ignore =  verdadero ;
  95.         else  if  (value.equalsIgnoreCase ( "verdadero" ))
  96.             esto .ignore =  verdadero ;
  97.         else  if  (value.equalsIgnoreCase ( "sí" ))
  98.             esto .ignore =  verdadero ;
  99.         más
  100.             esto .ignore =  falso ;
  101.     }
  102.     // ------------------------------------------------ ------ Métodos protegidos
  103.     / **
  104.      * Seleccione una codificación de caracteres adecuada para utilizar, según el
  105.      * características de la solicitud actual y / o inicialización del filtro
  106.      * parámetros. Si no se debe establecer una codificación de caracteres, regrese
  107.      * <code> nulo </code>.
  108.      * <p>
  109.      * La implementación predeterminada devuelve incondicionalmente el valor configurado
  110.      * por el parámetro de inicialización <strong> codificación </strong> para este
  111.      * filtro.
  112.      *
  113.      * @param request La solicitud de servlet que estamos procesando
  114.      * /
  115.     protected  String selectEncoding (solicitud de ServletRequest) {
  116.         return  ( este .encoding);
  117.     }
  118. }

Supongo que te gusta

Origin blog.csdn.net/geggegeda/article/details/2942965
Recomendado
Clasificación