노무현 대통령 배너

이전 포스트 까지는 servlet이 어떻게 돌아가는가를 살펴보았는데

정리하자면…


servlet - 기본적인 동작 방식

webserver (tomcat) 앞쪽에 컨테이너 (서블릿 컨테이너, jsp 컨테이너) 가 서블릿을 로딩

-> 사용자의 요청을 받아 request, response 객체를 만들어냄

-> service 메소드에 인자값을 넘겨주고

-> http 전송방식에 따라 doGet, doPost ...... 등의 메소드가 실행된다.



< get 방식의 한글 처리>


한글처리를 할때.... 요청과 응답 두과정 모두에서 한글처리를 해주어야한다.

web.xml 에서 만들 서블릿에대한 정의를 해준다.


사용자 삽입 이미지


그리고 HanServlet 을 만들어준다.


사용자 삽입 이미지


사용자 삽입 이미지



web.xml 에서 /han/* 이라고 했다.

http://localhost:8080/wps/han/a?name=가나다

이런식으로 * 대신 아무 문자나 쓰고 ?name=XXX 라고 쳐보자.

? 는 파라메터 값이 나옴을 의미하는데 클라이언트에서 서버로 넘겨주는 값(문자열)을 의미한다.

(클라이언트에서 서버쪽으로 데이터를 넘기는 방식중 get 방식이다.)

클라이언트에서 요청을 했는데 파라메터값 - name=XXX - 이 같이 넘어왔다.

그럼 servlet 에서는 그 값을 받아서 처리를 해준다.

요청이니까...  request.getParameter("name");

넘어온 값을 String 형의 name 이라는 변수에 넣어준다.

String name = request.getParameter("name");

String name 을 화면에 뿌려주기위해서

PrintWriter pw =  response.getWriter();

pw.write(name);

요렇게 해준다.


그럼 일단 브라우져에서 한글이 나오기는 하지만

콘솔창에서 깨져나옴을 알 수 있다. (물론 영어는 양쪽다 잘 나온다.)


사용자 삽입 이미지


사용자 삽입 이미지


기본적으로 웹 환경은 문자를 무조건 iso-8859-1 이라는 케릭셋으로 인코딩해서 전송한다.

우리가 보낸것은 한글이므로 저것을 받아서 재처리를 해주어야한다.

iso-8859-1 -> euc-kr

첫번째로 String name 으로 받은 iso-8859-1 로 전송된 넘어온 파라메터 값을

byte 단위로 쪼갠다.

byte[] b = name.getBytes("iso-8859-1");

쪼개어 배열 b 에 저장된 데이터를 euc-kr 로 재조합하여 변수 name 에 넣는다.

name = new String(b, "euc-kr");

즉, iso-8859-1 로 쪼개진 바이트 배열을 euc-kr 로 재조합한것임



여기까지가 get 방식의 request(요청) 에대한 한글처리이다.

실행을 해보면...


사용자 삽입 이미지

사용자 삽입 이미지


콘솔창에는 한글이 잘나온다.

그렇지만 response (응답) 에대한 한글처리 하지 않았기때문에

브라우저에서는 깨진 내용이 나오게 된다.

response.setCharacterEncoding("euc-kr");

라고 해주면 응답에 대한 한글처리가 된것이다.



이상태에서 실행해보면....


사용자 삽입 이미지

사용자 삽입 이미지


그렇지만 브라우저의 문자인코딩 옵션이 한글로 되어있을때는

이렇게 잘 나오지만 다른 언어로 잡혀있다면 한글이 제대로 나오지 않는다.


사용자 삽입 이미지

사용자 삽입 이미지


웹브라우저가 자동으로 인식하도록 하기 위해서 한줄을 추가 하여준다.

response.setContentType("text/html; charset=euc-kr");

내용물의 형식을 알려주는것으로...

text의 html 이고.... charset 은 euc-kr 이라고 웹 브라우저에게 알려주는 구문이다.



실행시켜보면... 콘솔창, 브라우져 모두 한글이 잘 나옴을 알 수 있으며,

인코딩옵션을 보면 한글로 자동으로 바뀌어 있음을 알 수 있다.

크리에이티브 커먼즈 라이센스
Creative Commons License

"웹 프로그래밍" 카테고리의 다른 글


이 글의 관련글
2009/05/02 05:05 2009/05/02 05:05

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/160

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)