JavaRush /Blog Java /Random-FR /Demander l'encodage au printemps à l'aide de CharacterEnc...
Core
Niveau 35
Екатеринбург

Demander l'encodage au printemps à l'aide de CharacterEncodingFilter

Publié dans le groupe Random-FR
Bonjour bon homme ! Introduction Il existe un problème très courant : l'affichage incorrect des caractères en langue russe dans une application Web. J'ai lu les articles et j'ai compris la racine du mal et les pierres d'achoppement. J'ai compris pourquoi ces lignes sont nécessaires sur les pages jsp et à quelles étapes du transfert de données dans la chaîne client-serveur -DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Mon principal problème résidait dans ce qui a été décrit dans un bon article (source : Tyts )
Voici le serveur créé par l'administrateur. Et il s'agit d'une application Web qui s'exécute sur un serveur construit par l'administrateur. Et il s'agit d'un servlet qui fait partie d'une application Web qui s'exécute sur un serveur créé par l'administrateur. Ou JSP, qui est le même servlet. Et cette servlet reçoit une requête. Et il contient des données. Lequel? Un ensemble d'octets. De quoi a besoin une servlet ? Symboles. Question : quel encodage dois-je utiliser ? Une autre excursion dans HTTP. Les données du formulaire lors de l'utilisation de la méthode POST sont transmises en indiquant un type de contenu spécifique : Type de contenu : application/x-www-form-urlencoded Théoriquement, l'encodage des données transmises peut également être spécifié ici : Type de contenu : application/ x-www-form-urlencoded ; charset=UTF-8 Dans tous les cas, Tomcat essaie de l'obtenir à partir d'ici. En pratique, seul Opera précise l'encodage. Peut-être que quelque chose changera à l'avenir, mais pour l'instant, les faits sont les suivants : le cryptage des données entrantes est inconnu ! Et il faut faire quelque chose à ce sujet.
La solution est d'utiliser un filtre. C'est bien écrit ici et c'est ce que j'ai fait (source : tyts ) J'ai inséré ce code de configuration dans web.xml Maintenant tout va bien et je suis fondamentalement content, mais je souhaite configurer ce filtre via les annotations Spring , puisque j'effectue tout d'autres configurations avec l'utilisation de classes Java. Et d’une manière ou d’une autre, je veux l’uniformité. J'ai 2 classes de configuration : l'une configure l'application, l'autre configure le contexte de l'application (injection de dépendances). Voici le code du premier cours. Je pense que la configuration du filtre doit être insérée dans cette classe, mais quelque chose ne va pas avec le code. C'est ma première expérience avec une application web, je demande donc l'aide de personnes plus expérimentées. Merci. 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("/"); } }
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION