JavaRush /Java Blog /Random-IT /Richiedi la codifica in Spring utilizzando CharacterEncod...
Core
Livello 35
Екатеринбург

Richiedi la codifica in Spring utilizzando CharacterEncodingFilter

Pubblicato nel gruppo Random-IT
Ciao buon uomo! Introduzione Esiste un problema molto diffuso: visualizzazione errata dei caratteri della lingua russa in un'applicazione web. Ho letto gli articoli e ho compreso la radice del male e gli ostacoli. Ho capito perché queste righe sono necessarie sulle pagine jsp e in quali fasi del trasferimento dei dati nella catena client-server -DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> il mio problema principale risiedeva in ciò che è stato descritto in un buon articolo (fonte: Tyts )
Ecco il server creato dall'amministratore. E questa è un'applicazione web che viene eseguita su un server creato dall'amministratore. E questo è un servlet che fa parte di un'applicazione web che viene eseguita su un server creato dall'amministratore. O JSP, che è lo stesso servlet. E questo servlet riceve una richiesta. E contiene dati. Quale? Un insieme di byte. Di cosa ha bisogno un servlet? Simboli. Domanda: quale codifica dovrei usare? Un'altra escursione in HTTP. I dati del modulo quando si utilizza il metodo POST vengono trasmessi indicando un tipo di contenuto specifico: Tipo di contenuto: application/x-www-form-urlencoded In teoria, la codifica dei dati trasmessi può essere specificata anche qui: Tipo di contenuto: application/ x-www-form-urlencoded; charset=UTF-8 In ogni caso, Tomcat sta cercando di ottenerlo da qui. In pratica solo Opera specifica la codifica. Forse qualcosa cambierà in futuro, ma per ora i fatti sono i seguenti: la codifica dei dati in arrivo è sconosciuta! E bisogna fare qualcosa al riguardo.
La soluzione è usare un filtro. Qui è scritto bene ed è quello che ho fatto (fonte: tyts ) Ho inserito questo codice di configurazione in web.xml Ora va tutto bene e sono sostanzialmente felice, ma voglio configurare questo filtro tramite le annotazioni Spring , visto che eseguo tutto altre configurazioni con l'utilizzo delle classi Java. E in qualche modo voglio l'uniformità. Ho 2 classi di configurazione: una configura l'applicazione, l'altra configura il contesto dell'applicazione (inserimento delle dipendenze). Ecco il codice della prima lezione. Credo che la configurazione del filtro debba essere inserita in questa classe, ma c'è qualcosa che non va nel codice. Questa è la mia prima esperienza con un'applicazione web, quindi chiedo aiuto a persone più esperte. Grazie. 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("/"); } }
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION