<< Lernziele >>
1. 클라이언트에서 보낸 데이터를 그대로 서버에서 가져올 수 있습니다.
기존에는 서버로 데이터를 보낼 때 영문자와 숫자만 보냈습니다.
클라이언트는 한국어 데이터를 서버로 보냈고 서버는 한국어 데이터를 얻기 위해 무언가를 해야 합니다.
클라이언트가 한국어 데이터를 보낼 수 있는 웹 페이지를 만들어 봅시다.
webapp에서 Chapter 03의 join.html을 생성하고 다음 코드를 입력합니다.
<!
DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 페이지</title>
</head>
<body>
<form action="http://localhost:8080/studyProject/chapter03/join" method="POST">
<fieldset>
아이디: <input type="text" name="id">
</fieldset>
<fieldset>
비밀번호: <input type="password" name="pw">
</fieldset>
<fieldset>
이름: <input type="text" name="name">
</fieldset>
<fieldset>
성별:
<label><input type="radio" name="gender" value="male">남자</label>
<label><input type="radio" name="gender" value="female">여자</label>
</fieldset>
<fieldset>
취미:
<label><input type="checkbox" name="fav" value="exercise">운동</label>
<label><input type="checkbox" name="fav" value="book">책읽기</label>
<label><input type="checkbox" name="fav" value="game">게임</label>
</fieldset>
<fieldset>
<input type="submit" value="회원가입">
</fieldset>
</form>
</body>
</html>
이 사이트는 회원 등록 사이트입니다.
아이디, 비밀번호, 성별, 취미정보는 영문으로, 이름은 한글로 전송됩니다.
먼저 회원가입 요청을 받을 서블릿을 추가해 보겠습니다.
chapter03 패키지에 조인 서블릿을 추가하고 아래와 같이 코드를 입력합니다.
package chapter03;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/chapter03/join")
public class Join extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String gender = request.getParameter("gender");
String() fav = request.getParameterValues("fav");
System.out.println("클라이언트가 보낸 id => " + id);
System.out.println("클라이언트가 보낸 pw => " + pw);
System.out.println("클라이언트가 보낸 name => " + name);
System.out.println("클라이언트가 보낸 gender => " + gender);
System.out.println("클라이언트가 보낸 fav => " + Arrays.toString(fav));
}
}
이제 회원가입 페이지에서 아래 양식에 맞게 데이터를 입력하고 (회원가입) 버튼을 클릭합니다.
다른 데이터는 클라이언트에서 보낸 그대로 가져오지만 이름만 클라이언트에서 보낸 것과 다르게 가져옵니다.
클라이언트에서 한글 데이터를 보내면 서버에서 데이터를 가져오기 전에 다음 코드 (1)을 작성해야 합니다.
이것은 클라이언트가 보낸 데이터가 UTF-8로 인코딩됨을 의미합니다.
코딩을 배우고 이해하면 더 복잡해집니다.
그래서 클라이언트에서 보낸 데이터에 한글이 하나라도 있으면 무조건 request.setCharacterEncoding(“UTF-8”)이라고 생각하시면 됩니다.
지금까지!
서버가 한글 데이터를 받는 방법 끝!