본문 바로가기

IT 관련/java

서블릿에서 한글 처리와 폼 데이터 처리하기

안녕하세요

초이스40입니다.

 

오늘은 웹 브라우저에서 응답하는 페이지의 한글 처리하는 방법에 대해서 알아보겠습니다.

웹 개발을 접하면서 첫 페이지에 가장 많이 쓰는 단어 "Hello World"입니다.

이것을 조금 바꾸어서 "안녕하세요"라고 출력해 보도록 하겠습니다.

 

1. 한글 깨지지 않게 설정하기

HttpServletResponse rest = rest.setContentType("text/html");

PrintWriter out = resp.getWriter();

out.println("<html>");

out.println("<head>");

out.println("<title>Hello World</title>");

out.println("<body>");

out.println("<he>안녕하세요</h1>");

out.println("</body>");

out.println("</html>");

out.close(); //출력 스트림을 닫는다.

 

위와 같이 입력하면 '안녕하세요'가 출력될까?

톰캣을 재시작 시킨 후, 페이지를 '새로고침' 하면 아래와 같이 한글이 깨져서 출력되는 것을 확인할 수 있다.

?????!

 

웹 브라우저에 응답하는 페이지에 대해서 한글을 출력할 경우 한글이 깨지지 않도록 하기 위해서는 HttpServletResponse 객체로 setContentType 메소드를 호출하여 응답 방식을 결정해 주면서 보여 주고자 하는 코드셋을 euc-kr로 지정해야 합니다.

"euc-kr"은 W3C에서 한국어를 위해 지정한 타입입니다. 아래와 같이 추가한 후에 실행하면 한글을 처리할 수 있습니다.

resp.setConteneType("text/html;charset=euc-kr");

 

2. 폼 태그의 get/post 방식

인터넷에서 회원 가입을 할 때 흔히 볼 수 있는 화면에서 관련된 정보를 입력하고 '확인' 또는 '저장' 버튼을 통해

해당 정보를 저장할 때는 html의 <form> 태그를 통해서 데이터를 넘겨줍니다.

클라이언트의 웹 브라우저에서 사용자로부터 다양한 정보를 입력받기 위해서 <form> 태그가 사용됩니다.

폼에 입력된 데이터를 서블릿 컨테이너가 받아서 처리하는 서블릿 프로그램을 작성해 보겠습니다.

 

<form method="get 또는 post" action="호출할 서블릿 파일명">과 같이 입력해서 폼 데이터를 전송합니다.

다음은 폼 태그가 가지는 속성에 대한 설명입니다.

속성 설명
method 어떤 방식으로 데이터를 넘겨 줄 것인지를 결정한다.
POST/GET 방식 중에서 하나를 선택한다.
POST는 사용자가 입력한 내용을 공개하지 않고 전송한다.
GET은 사용자가 입력한 내용을 공개하여 전송한다.
action 전송(submit) 버튼이 누르면 action 속성 다음에 기술한 URL에 지정된 파일로 이동한다.

보통 <form> 태그에서 보이면 안 되는 데이터는 method 방식을 post로 전송합니다.

회원가입과 같은 데이터는 post 방식으로 전송해야 안전합니다.

 

간단하게 웹 브라우저에서의 한글 처리와 <form> 태그의 속성에 대해서 알아보았습니다.

실제로 개발할 때는 당연한 것이지만 잊어버리고 가끔 실수하는 것이 바로 한글 처리입니다.

 

위와 같은 설정으로 한글에 대해서 처리할 수 있습니다.

 

그럼이만.

끝.