4. "TestLoginService.java"의 한글 메시지로 되어 있는 부분을
request.setAttribute("errorMessage", "이미 접속자된 분이 있습니다. 로그인을 할 수 없습니다.");
request.setAttribute("errorMessage", "아이디/패스워드가 정확하지 않습니다.");
"resourceBundle.getString"로 변경합니다.
request.setAttribute("errorMessage", resourceBundle.getString("login.block"));
request.setAttribute("errorMessage", resourceBundle.getString("login.mismatch"));
5. "Servers"탭에서 "tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다.
웹 브라우저에서 "http://localhost:8080/test2/testform.do"를 입력합니다. "testform.jsp"대신 "login.jsp"가 호출되어 나타납니다. 첫번째 입력란은 아이디로 "1"를 두번째 입력란은 패스워드로 "2"를 입력하고 "전송"버튼을 누릅니다.
"아이디/패스워드가 정확하지 않습니다."라는 에러 메시지가 한글이 깨져서 나타납니다.
"Servers"탭에서 "Tomcat8"를 선택하고 "stop"버튼(stop the server)을 클릭합니다.
그 이유는 "ResourceBundle"의 "getBundle"이 프로퍼티(.properties)파일을 읽을 때 실제로는 "PropertyResourceBundle"을 사용합니다. "Properties"의 "load(InputStream)"을 사용하여 해당 파일을 로드하게 되는데 기본적으로 "ISO-8859-1"로 읽어서 생기는 문제입니다.
프로퍼티(.properties)파일의 내용을 인코딩하거나
login.mismatch=\uc544\uc774\ub514/\ud328\uc2a4\uc6cc\ub4dc\uac00 \uc815\ud655\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.
login.block=\uc774\ubbf8 \uc811\uc18d\uc790\ub41c \ubd84\uc774 \uc788\uc2b5\ub2c8\ub2e4. \ub85c\uadf8\uc778\uc744 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
프로퍼티(.properties)파일로 부터 읽어들인 문자열의 인코딩을 "ISO-8859-1"에서 "UTF-8"로 변경해야 합니다.
request.setAttribute("errorMessage", new String(resourceBundle.getString("login.block").getBytes("ISO-8859-1"), "UTF-8"));
request.setAttribute("errorMessage", new String(resourceBundle.getString("login.mismatch").getBytes("ISO-8859-1"), "UTF-8"));
6. "Servers"탭에서 "Tomcat8"를 선택하고 "start"버튼(start the server)을 클릭합니다.
웹 브라우저에서 "http://localhost:8080/test2/testform.do"를 입력합니다. 첫번째 입력란은 아이디로 "1"를 두번째 입력란은 패스워드로 "2"를 입력하고 "전송"버튼을 누르면 정상적으로 "아이디/패스워드가 정확하지 않습니다."라는 에러 메시지가 나타납니다.
이처럼, 개발 소스에서 문자열을 직접 처리 하지 않게 됨으로써 에러 메시지 수정 작업이 용이해지고 관리되는 프로젝트에 영향을 주지 않습니다. 또한 향후 국제화 지원로 프로퍼티 추가만으로 해결할 수 있습니다.