JavaRush /Blog Java /Random-ES /Solicite codificación en Spring usando CharacterEncodingF...
Core
Nivel 35
Екатеринбург

Solicite codificación en Spring usando CharacterEncodingFilter

Publicado en el grupo Random-ES
Hola buen hombre! Introducción Existe un problema muy común: la visualización incorrecta de caracteres del idioma ruso en una aplicación web. Leí los artículos y comprendí la raíz del mal y los obstáculos. Me di cuenta de por qué se necesitan estas líneas en las páginas jsp y en qué etapas de la transferencia de datos en la cadena cliente-servidor -DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Mi principal problema radica en lo que se describe en un buen artículo (fuente: Tyts ) .
Aquí está el servidor que construyó el administrador. Y esta es una aplicación web que se ejecuta en un servidor creado por el administrador. Y este es un servlet que forma parte de una aplicación web que se ejecuta en un servidor creado por el administrador. O JSP, que es el mismo servlet. Y este servlet recibe una solicitud. Y contiene datos. ¿Cual? Un conjunto de bytes. ¿Qué necesita un servlet? Símbolos. Pregunta: ¿qué codificación debo utilizar? Otra excursión a HTTP. Los datos del formulario cuando se utiliza el método POST se transmiten indicando un tipo de contenido específico: Tipo de contenido: aplicación/x-www-form-urlencoded Teóricamente, la codificación de los datos transmitidos también se puede especificar aquí: Tipo de contenido: aplicación/ x-www-form-urlencoded; charset=UTF-8 En cualquier caso, Tomcat está intentando obtenerlo desde aquí. En la práctica, sólo Opera especifica la codificación. Quizás algo cambie en el futuro, pero por ahora los hechos son los siguientes: ¡se desconoce la codificación de los datos entrantes! Y es necesario hacer algo al respecto.
La solución es utilizar un filtro. Está bien escrito aquí y eso es lo que hice (fuente: tyts ). Inserté este código de configuración en web.xml. Ahora todo está bien y estoy básicamente feliz, pero quiero configurar este filtro a través de anotaciones Spring , ya que realizo todo. otras configuraciones con el uso de clases java. Y de alguna manera quiero uniformidad. Tengo 2 clases de configuración: una configura la aplicación y la otra configura el contexto de la aplicación (inyección de dependencia). Aquí está el código de la primera clase. Creo que la configuración del filtro debe insertarse en esta clase, pero algo anda un poco mal con el código. Esta es mi primera experiencia con una aplicación web, por lo que pido ayuda a personas con más experiencia. Gracias. characterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true characterEncodingFilter /* package net.kaa.todolist.config; import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRegistration; public class AppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebApplicationContext appContext = new AnnotationConfigWebApplicationContext(); appContext.register(ApplicationContextConfig.class); ServletRegistration.Dynamic dispatcher = servletContext.addServlet("SpringDispatcher", new DispatcherServlet(appContext)); dispatcher.setLoadOnStartup(1); dispatcher.addMapping("/"); } }
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION