<< 학습 목표 >>

1. 클라이언트가 보낸 데이터를 서버에서 그대로 꺼낼 수 있다.


우리는 지금까지 서버로 데이터를 보낼 때 영문, 숫자만 보내봤음

클라이언트가 한글 데이터를 서버로 보냈고 서버가 한글 데이터를 꺼내려면 한가지 처리가 필요함

 

클라이언트가 한글 데이터를 보내도록 웹 페이지를 만들어보자

webapp 안에 chapter03 안에 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 패키지 내 join 서블릿을 추가하고 아래와 같이 코드 입력

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") 로 하자 라고 생각하면 됨

 

여기까지! 서버가 한글 데이터를 받는 방법 끝!

728x90
LIST