이전 포스트 까지는 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 이라고 웹 브라우저에게 알려주는 구문이다.
실행시켜보면... 콘솔창, 브라우져 모두 한글이 잘 나옴을 알 수 있으며,
인코딩옵션을 보면 한글로 자동으로 바뀌어 있음을 알 수 있다.
"웹 프로그래밍" 카테고리의 다른 글
- 웹 어플리케이션 01 - 간단한 개념 정리 (댓글 0개 / 트랙백 0개) 2009/04/08
- 왠지 골치아픈 한글처리 (get방식) (댓글 2개 / 트랙백 0개) 2009/03/30
- 웹 어플리케이션 10 - 창고를 이용해볼까? (방명록) (댓글 0개 / 트랙백 0개) 2009/05/04
- 웹 어플리케이션 06 - 한글처리 (post 방식) (댓글 0개 / 트랙백 0개) 2009/05/02
- 웹 어플리케이션 03 - 서블릿은 어떻게 돌아가나? (2) (댓글 0개 / 트랙백 0개) 2009/04/15
- 웹 어플리케이션 08 - 페이지이동의 두가지 방식 (1) redirect 방식 (댓글 0개 / 트랙백 0개) 2009/05/03
- 톰캣과 오라클 포트 충돌 (댓글 0개 / 트랙백 0개) 2009/03/10
- 웹 어플리케이션 04 - 서블릿을 이용한 페이지 출력 (1) (방명록) (댓글 0개 / 트랙백 0개) 2009/05/02
- 웹 어플리케이션 12 - jsp 에서 db에 입력을 하여보자!! (댓글 0개 / 트랙백 0개) 2009/06/16
- 웹 어플리케이션 02 - 서블릿은 어떻게 돌아가나? (1) (댓글 0개 / 트랙백 0개) 2009/04/08



댓글을 달아 주세요