JavaRush /Blog Java /Random-PL /Poproś o kodowanie w Springu, używając CharacterEncodingF...
Core
Poziom 35
Екатеринбург

Poproś o kodowanie w Springu, używając CharacterEncodingFilter

Opublikowano w grupie Random-PL
Witaj dobry człowieku! Wprowadzenie Istnieje bardzo popularny problem - nieprawidłowe wyświetlanie znaków rosyjskojęzycznych w aplikacji internetowej. Przeczytałem te artykuły i zrozumiałem źródło zła i przeszkody. Zdałem sobie sprawę, dlaczego te linie są potrzebne na stronach jsp i na jakich etapach przesyłania danych w łańcuchu klient-serwer -DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Mój główny problem polegał na tym, co zostało opisane w jednym dobrym artykule (źródło: Tyts )
Oto serwer zbudowany przez administratora. A to jest aplikacja internetowa, która działa na serwerze zbudowanym przez administratora. To jest serwlet będący częścią aplikacji internetowej działającej na serwerze zbudowanym przez administratora. Lub JSP, który jest tym samym serwletem. I ten serwlet otrzymuje żądanie. I zawiera dane. Który? Zestaw bajtów. Czego potrzebuje serwlet? Symbolika. Pytanie: jakiego kodowania powinienem użyć? Kolejna wycieczka do HTTP. Dane z formularza przy wykorzystaniu metody POST przesyłane są ze wskazaniem konkretnego typu treści: Content-type: application/x-www-form-urlencoded Teoretycznie tutaj można określić także kodowanie przesyłanych danych: Content-type: application/ x-www-form-urlencoded; charset=UTF-8 W każdym razie Tomcat próbuje go stąd pobrać. W praktyce tylko Opera określa kodowanie. Być może w przyszłości coś się zmieni, ale na razie fakty są takie: nie wiadomo, jakie jest kodowanie napływających danych! I trzeba coś z tym zrobić.
Rozwiązaniem jest użycie filtra. Tutaj jest dobrze napisane i tak właśnie zrobiłem (źródło: tyts ) Wstawiłem ten kod konfiguracyjny do web.xml Teraz wszystko jest w porządku i w zasadzie jestem szczęśliwy, ale chcę skonfigurować ten filtr poprzez adnotacje Springa , ponieważ wszystko wykonuję inne konfiguracje z użyciem klas Java. I w jakiś sposób chcę jednolitości. Mam 2 klasy konfiguracyjne: jedna konfiguruje aplikację, druga konfiguruje kontekst aplikacji (wstrzykiwanie zależności). Oto kod pierwszej klasy. Uważam, że należy wstawić konfigurację filtra do tej klasy, ale coś jest trochę nie tak z kodem. To mój pierwszy kontakt z aplikacją webową, dlatego proszę o pomoc osoby bardziej doświadczone. Dziękuję. 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("/"); } }
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION