JavaRush /Java Blog /Random-KO /CharacterEncodingFilter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Spring์—์„œ ์ธ์ฝ”๋”ฉ ์š”์ฒญ
Core
๋ ˆ๋ฒจ 35
ะ•ะบะฐั‚ะตั€ะธะฝะฑัƒั€ะณ

CharacterEncodingFilter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Spring์—์„œ ์ธ์ฝ”๋”ฉ ์š”์ฒญ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…• ์ข‹์€ ์‚ฌ๋žŒ! ์†Œ๊ฐœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋Ÿฌ์‹œ์•„์–ด ๋ฌธ์ž๊ฐ€ ์ž˜๋ชป ํ‘œ์‹œ๋˜๋Š” ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ธฐ์‚ฌ๋ฅผ ์ฝ๊ณ  ์•…์˜ ๊ทผ์›๊ณผ ๊ฑธ๋ฆผ๋Œ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. JSP ํŽ˜์ด์ง€์—์„œ ์ด๋Ÿฌํ•œ ํ–‰์ด ํ•„์š”ํ•œ ์ด์œ ์™€ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ -DB ์ฒด์ธ ์˜ ๋ฐ์ดํ„ฐ ์ „์†ก ๋‹จ๊ณ„๋ฅผ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค . <%@ 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