JavaRush /จาวาบล็อก /Random-TH /ร้องขอการเข้ารหัสใน Spring โดยใช้ CharacterEncodingFilter...
Core
ระดับ
Екатеринбург

ร้องขอการเข้ารหัสใน Spring โดยใช้ CharacterEncodingFilter

เผยแพร่ในกลุ่ม
สวัสดีคนดี! บทนำ มีปัญหาที่ได้รับความนิยมมาก - การแสดงอักขระภาษารัสเซียไม่ถูกต้องในเว็บแอปพลิเคชัน ฉันอ่านบทความและเข้าใจต้นตอของความชั่วร้ายและสิ่งกีดขวาง ฉันรู้ว่าเหตุใดจึงจำเป็นต้องใช้บรรทัดเหล่านี้บนหน้า jsp และขั้นตอนใดของการถ่ายโอนข้อมูลในไคลเอนต์ - เซิร์ฟเวอร์ - DB chain : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> ปัญหาหลักของฉันอยู่ที่สิ่งที่อธิบายไว้ในบทความที่ดีบทความเดียว (ที่มา: Tyts )
นี่คือเซิร์ฟเวอร์ที่ผู้ดูแลระบบสร้างขึ้น และนี่คือเว็บแอปพลิเคชันที่ทำงานบนเซิร์ฟเวอร์ที่สร้างโดยผู้ดูแลระบบ และนี่คือเซิร์ฟเล็ตที่เป็นส่วนหนึ่งของเว็บแอปพลิเคชันที่ทำงานบนเซิร์ฟเวอร์ที่ผู้ดูแลระบบสร้างขึ้น หรือ JSP ซึ่งเป็นเซิร์ฟเล็ตเดียวกัน และเซิร์ฟเล็ตนี้ได้รับการร้องขอ และมีข้อมูล ที่? ชุดของไบต์ เซิร์ฟเล็ตต้องการอะไร? สัญลักษณ์ คำถาม: ฉันควรใช้การเข้ารหัสแบบใด การเดินทางสู่ HTTP อีกครั้ง ข้อมูลจากแบบฟอร์มเมื่อใช้วิธีการ POST จะถูกส่งโดยระบุประเภทเนื้อหาเฉพาะ: Content-type: application/x-www-form-urlencoded ในทางทฤษฎี การเข้ารหัสของข้อมูลที่ส่งสามารถระบุได้ที่นี่: Content-type: application/ x-www-form- urlencoded; charset=UTF-8 ไม่ว่าในกรณีใด Tomcat กำลังพยายามดึงมันมาจากที่นี่ ในทางปฏิบัติ มีเพียง Opera เท่านั้นที่ระบุการเข้ารหัส บางทีอาจมีบางอย่างเปลี่ยนแปลงในอนาคต แต่ตอนนี้ข้อเท็จจริงมีดังนี้ ไม่ทราบการเข้ารหัสข้อมูลที่เข้ามา! และจำเป็นต้องทำอะไรบางอย่างเกี่ยวกับเรื่องนี้
วิธีแก้ไขคือใช้ตัวกรอง เขียนไว้อย่างดีที่นี่และนั่นคือสิ่งที่ฉันทำ (ที่มา: tyts ) ฉันแทรกโค้ดการกำหนดค่านี้ลงใน web.xml ตอนนี้ทุกอย่างเรียบร้อยดีและโดยพื้นฐานแล้วฉันก็มีความสุข แต่ฉันต้องการกำหนดค่าตัวกรองนี้ผ่าน คำอธิบายประกอบ ของ Springเนื่องจากฉันดำเนินการทั้งหมด การกำหนดค่าอื่นๆ โดยใช้คลาส Java และฉันต้องการความสม่ำเสมอ ฉันมีคลาสการกำหนดค่า 2 คลาส: คลาสหนึ่งกำหนดค่าแอปพลิเคชัน และอีกคลาสกำหนดค่าบริบทแอปพลิเคชัน (การพึ่งพาการฉีด) นี่คือรหัสสำหรับชั้นหนึ่ง ฉันเชื่อว่าจำเป็นต้องแทรกการกำหนดค่าตัวกรองลงในคลาสนี้ แต่มีบางอย่างผิดปกติกับโค้ดเล็กน้อย นี่เป็นประสบการณ์ครั้งแรกของฉันกับเว็บแอปพลิเคชัน ดังนั้นฉันจึงขอความช่วยเหลือจากผู้ที่มีประสบการณ์มากกว่า ขอบคุณ 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("/"); } }
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION