JavaRush /Blog Java /Random-MS /Minta pengekodan dalam Spring menggunakan CharacterEncodi...
Core
Tahap
Екатеринбург

Minta pengekodan dalam Spring menggunakan CharacterEncodingFilter

Diterbitkan dalam kumpulan
Hello lelaki yang baik! Pengenalan Terdapat masalah yang sangat popular - paparan aksara bahasa Rusia yang salah dalam aplikasi web. Saya membaca artikel dan memahami punca kejahatan dan batu sandungan. Saya menyedari mengapa baris ini diperlukan pada halaman jsp dan pada peringkat pemindahan data dalam rangkaian klien-pelayan- DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Masalah utama saya terletak pada apa yang diterangkan dalam satu artikel yang baik (sumber: Tyts )
Inilah pelayan yang admin bina. Dan ini adalah aplikasi web yang berjalan pada pelayan yang dibina oleh pentadbir. Dan ini adalah servlet yang merupakan sebahagian daripada aplikasi web yang berjalan pada pelayan yang dibina oleh pentadbir. Atau JSP, yang merupakan servlet yang sama. Dan servlet ini menerima permintaan. Dan ia mengandungi data. yang mana? Satu set bait. Apakah yang diperlukan oleh servlet? Simbol. Soalan: apakah pengekodan yang perlu saya gunakan? Satu lagi lawatan ke HTTP. Data daripada borang apabila menggunakan kaedah POST dihantar menunjukkan jenis kandungan tertentu: Content-type: application/x-www-form-urlencoded Secara teorinya, pengekodan data yang dihantar juga boleh dinyatakan di sini: Content-type: application/ x-www-form- urlencoded; charset=UTF-8 Walau apa pun, Tomcat cuba mendapatkannya dari sini. Dalam amalan, hanya Opera yang menentukan pengekodan. Mungkin sesuatu akan berubah pada masa hadapan, tetapi buat masa ini faktanya adalah seperti berikut: pengekodan data masuk tidak diketahui! Dan sesuatu perlu dilakukan mengenai perkara ini.
Penyelesaiannya adalah dengan menggunakan penapis. Ia ditulis dengan baik di sini dan itulah yang saya lakukan (sumber: tyts ) Saya memasukkan kod konfigurasi ini ke dalam web.xml Sekarang semuanya baik-baik saja dan pada dasarnya saya gembira, tetapi saya ingin mengkonfigurasi penapis ini melalui anotasi Spring , kerana saya menjalankan semua konfigurasi lain dengan menggunakan kelas java. Dan entah bagaimana saya mahukan keseragaman. Saya mempunyai 2 kelas konfigurasi: satu mengkonfigurasi aplikasi, yang lain mengkonfigurasi konteks aplikasi (suntikan kebergantungan). Berikut ialah kod untuk kelas pertama. Saya percaya bahawa konfigurasi penapis perlu dimasukkan ke dalam kelas ini, tetapi ada sesuatu yang tidak sesuai dengan kod tersebut. Ini adalah pengalaman pertama saya dengan aplikasi web, jadi saya meminta bantuan daripada orang yang lebih berpengalaman. Terima kasih. 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("/"); } }
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION