JavaRush /Java-Blog /Random-DE /Fordern Sie die Codierung im Frühjahr mit CharacterEncodi...
Core
Level 35
Екатеринбург

Fordern Sie die Codierung im Frühjahr mit CharacterEncodingFilter an

Veröffentlicht in der Gruppe Random-DE
Hallo guter Mann! Einleitung Es gibt ein sehr häufiges Problem – die falsche Anzeige russischsprachiger Zeichen in einer Webanwendung. Ich habe die Artikel gelesen und die Wurzel des Übels und die Stolpersteine ​​verstanden. Mir wurde klar, warum diese Zeilen auf JSP-Seiten benötigt werden und in welchen Phasen der Datenübertragung in der Client-Server- DB-Kette : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Mein Hauptproblem lag in dem, was in einem guten Artikel beschrieben wurde (Quelle: Tyts ) .
Hier ist der Server, den der Administrator erstellt hat. Und dies ist eine Webanwendung, die auf einem vom Administrator erstellten Server ausgeführt wird. Dabei handelt es sich um ein Servlet, das Teil einer Webanwendung ist, die auf einem vom Administrator erstellten Server ausgeführt wird. Oder JSP, das dasselbe Servlet ist. Und dieses Servlet erhält eine Anfrage. Und es enthält Daten. Welche? Eine Reihe von Bytes. Was braucht ein Servlet? Symbole. Frage: Welche Kodierung soll ich verwenden? Ein weiterer Ausflug in HTTP. Bei Verwendung der POST-Methode werden Daten aus dem Formular übertragen, die auf einen bestimmten Inhaltstyp hinweisen: Inhaltstyp: application/x-www-form-urlencoded Theoretisch kann hier auch die Kodierung der übertragenen Daten angegeben werden: Inhaltstyp: application/ x-www-form-urlencoded; charset=UTF-8 Auf jeden Fall versucht Tomcat, es von hier aus abzurufen. In der Praxis gibt nur Opera die Kodierung vor. Vielleicht wird sich in Zukunft etwas ändern, aber vorerst sind die Fakten wie folgt: Die Verschlüsselung der eingehenden Daten ist unbekannt! Und dagegen muss etwas getan werden.
Die Lösung besteht darin, einen Filter zu verwenden. Es ist hier gut geschrieben und das habe ich getan (Quelle: tyts ). Ich habe diesen Konfigurationscode in web.xml eingefügt. Jetzt ist alles in Ordnung und ich bin im Grunde zufrieden, aber ich möchte diesen Filter über Spring Annotations konfigurieren , da ich alles ausführe andere Konfigurationen mit Verwendung von Java-Klassen. Und irgendwie möchte ich Einheitlichkeit. Ich habe zwei Konfigurationsklassen: Eine konfiguriert die Anwendung, die andere konfiguriert den Anwendungskontext (Abhängigkeitsinjektion). Hier ist der Code für die erste Klasse. Ich glaube, dass die Filterkonfiguration in diese Klasse eingefügt werden muss, aber mit dem Code stimmt etwas nicht. Dies ist meine erste Erfahrung mit einer Webanwendung, daher bitte ich um Hilfe von erfahreneren Leuten. Danke. 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("/"); } }
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION