Spring3에서 한글깨짐 방지를 위한 인코딩 설정하기
개발언어/Java, Spring 2017. 5. 26. 09:54
Spring을 처음부터 구축하다보면 인코딩 기본값이 한글에 적합한 것이 아닌
이상한 것들이 설정되어 있다.
그래서 이 포스팅은 UTF-8로 인코딩값을 설정해 해결하는 방법을 다루겠습니다.
Overview
인코딩 설정을 설명하기 위해 개략적으로 아래의 구조를 생성하겠습니다.
TestController를 만들고, form.jsp, submit.jsp를 생성하겠습니다.
"/form" Request에 의해 Form 입력 페이지(form.jsp)가 호출되고,
submit 버튼에 의해 "/submit" Request가 발생하게 구성합니다.
그리고 최종적으로 TestController에서 이를 결과값 출력 페이지(submit.jsp)로 Response하는 구조입니다.
TestController 생성하기
저는 컨트롤러를 만들기위해 com.devks.test.controller 패키를 생성하고 그 안에 컨트롤러를 만들었습니다.
TestController는 단순합니다.
- form(): '/form' Request에 form.jsp 페이지를 return해줍니다.
- submit(...): '/submit' Request에 넘어온 값을 받아 Model에 담아 submit.jsp를 return합니다.
@RequestMapping("/form") public String form(){ return "form" } @RequestMapping("/submit") public String submit(HttpServletRequest request, Model model){ model.addAttribute("value", request.getParameter("value")); return "submit"; }
입력폼(form.jsp) 생성하기
이제 컨트롤러를 이용해 값을 입력하기 위한 간단한 View 페이지를 생성하겠습니다. (webapp > WEB-INF > view )
Input Form
출력폼(submit.jsp) 생성하기
마지막으로 form.jsp에서 입력된 값을 Controller에서 처리해 출력할 페이지(submit.jsp)를 생성하겠습니다.
Result Value: ${value }
첫번째 테스트 하기
Tomcat을 가동하고 URL을 이용해서 Web root에서 '.../form' Request를 발생시켜 입력폼으로 이동합니다.
(ex. http://localhost:8080/devks/form)
그리고 아래와 같이 한글로 테스트 결과값을 입력하고 [submit]을 눌러 제출합니다.
그러면...
아무 설정도 하지 않은 보통의 경우 인코딩의 차이로 글자가 이렇게 깨집니다.
이제 문제상황을 만드는 준비가 끝났습니다. -_-;;;
인코딩 설정하기
인코딩을 설정하는 방법은 크게 두가지입니다.
매번 Controller에서 아래 인코딩 소스를 추가해주는 방법이 하나.
request.setCharacterEncoding('utf-8');
web.xml 설정파일에 filter를 추가하여 Encoding을 설정하는 방법이 있습니다.
매번 소스를 추가하기는 매우 번거롭고 깔끔한 것이 최고이기 때문에
필터를 이용해서 인코딩 설정을 수행하겠습니다.
WEB-INF에 있는 web.xml을 열고 <web-app>...</web-app> 사이에 아래 filter code를 추가하시면 끝납니다.
encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /*
그리고 확인해보면 한글이 제대로 나오는 것을 확인할 수 있습니다.
'개발언어 > Java, Spring' 카테고리의 다른 글
Spring3 Intercepter 사용하기 (0) | 2017.06.05 |
---|---|
Spring3 JSON 사용하기(JACKSON) (0) | 2017.06.04 |
(RESTful) 이미지 등 Resource 파일 인식하기 위한 설정 (0) | 2017.06.02 |
MultipartResolver 설정을 통한 파일전송 (0) | 2017.05.29 |
STS 설치하고 간단한 Spring 프로젝트 생성하기 (0) | 2017.05.24 |