JavaRush /Blog Java /Random-VI /Yêu cầu mã hóa trong Spring bằng CharacterEncodingFilter
Core
Mức độ
Екатеринбург

Yêu cầu mã hóa trong Spring bằng CharacterEncodingFilter

Xuất bản trong nhóm
Xin chào người đàn ông tốt! Giới thiệu Có một vấn đề rất phổ biến - hiển thị không chính xác các ký tự tiếng Nga trong ứng dụng web. Tôi đọc các bài viết và hiểu được gốc rễ của cái ác cũng như những trở ngại. Tôi đã nhận ra lý do tại sao những dòng này lại cần thiết trên các trang jsp và ở giai đoạn nào của quá trình truyền dữ liệu trong chuỗi client-server -DB : <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Vấn đề chính của tôi nằm ở những gì đã được mô tả trong một bài viết hay (nguồn: Tyts )
Đây là máy chủ mà quản trị viên đã xây dựng. Và đây là một ứng dụng web chạy trên máy chủ do quản trị viên xây dựng. Và đây là một servlet là một phần của ứng dụng web chạy trên máy chủ do quản trị viên xây dựng. Hoặc JSP, cùng một servlet. Và servlet này nhận được một yêu cầu. Và nó chứa dữ liệu. Cái mà? Một tập hợp byte. Một servlet cần gì? Biểu tượng. Câu hỏi: tôi nên sử dụng mã hóa nào? Một chuyến tham quan khác vào HTTP. Dữ liệu từ biểu mẫu khi sử dụng phương thức POST được truyền đi cho biết một loại nội dung cụ thể: Content-type: application/x-www-form-urlencoded Về mặt lý thuyết, việc mã hóa dữ liệu được truyền cũng có thể được chỉ định tại đây: Content-type: application/ x-www-form- urlencoded; charset=UTF-8 Trong mọi trường hợp, Tomcat đang cố lấy nó từ đây. Trong thực tế, chỉ có Opera chỉ định mã hóa. Có thể điều gì đó sẽ thay đổi trong tương lai, nhưng hiện tại, sự thật như sau: vẫn chưa xác định được mã hóa của dữ liệu đến! Và cần phải làm gì đó về việc này.
Giải pháp là sử dụng bộ lọc. Ở đây nó được viết rất hay và đó là những gì tôi đã làm (nguồn: tyts ) Tôi đã chèn mã cấu hình này vào web.xml Bây giờ mọi thứ đều ổn và về cơ bản tôi hài lòng, nhưng tôi muốn định cấu hình bộ lọc này thông qua các chú thích Spring , vì tôi đã thực hiện tất cả các cấu hình khác bằng cách sử dụng các lớp java. Và bằng cách nào đó tôi muốn sự đồng nhất. Tôi có 2 lớp cấu hình: một lớp định cấu hình ứng dụng, lớp còn lại định cấu hình ngữ cảnh ứng dụng (nội xạ phụ thuộc). Đây là mã cho lớp đầu tiên. Tôi tin rằng cấu hình bộ lọc cần được chèn vào lớp này, nhưng có điều gì đó hơi sai với mã. Đây là trải nghiệm đầu tiên của tôi với một ứng dụng web, vì vậy tôi đang nhờ sự trợ giúp từ những người có kinh nghiệm hơn. Cảm ơn. 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("/"); } }
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION