Where The Streets Have No Name

JSP/Servlet에서의 Cookie에 한글값 쓰기 본문

Developement/Java

JSP/Servlet에서의 Cookie에 한글값 쓰기

highheat 2008. 7. 1. 17:42
출처 : http://kimgisa.net/210

쿠키에 속성값을 한글로 저장하기 위해서는 몇가지 과정이 필요하다.

한글이나 특수문자, 그리고 유니코드들은 쿠키에 저장하기전에
URLEncoder 로 인코딩을 하고, 사용할 때 URLDecoder로 디코딩해주어야 한다.
URLEncoder및 URLDecoder는 java.net 패키지에 있다.

다음은 서블릿에서의 예제이다.
--------------------------
1. 폼에서 서블릿으로 넘어온 값을 쿠키에 저장하는 예제
....
  response.setContentType("text/html;charset=EUC-KR");
  request.setCharacterEncoding("euc-kr");

  String username = request.getParameter("username");
  String job = request.getParameter("job");

  Cookie cookie = new Cookie("username", URLEncoder.encode(username, "euc-kr"));
  response.addCookie(cookie);

  cookie = new Cookie("job", URLEncoder.encode(job, "euc-kr"));
  response.addCookie(cookie);


--------------------------
2. 쿠키의 값을 읽어서 화면에 출력하는 예제

  response.setContentType("text/html;charset=EUC-KR");
  request.setCharacterEncoding("euc-kr");

  PrintWriter out = response.getWriter();
 
  String username = null;
  String job = null;

  Cookie[] cookies = request.getCookies();

  for (int i = 0; i < cookies.length; i++) {
   Cookie thisCookie = cookies[i];
   if (thisCookie.getName().equals("username")) {
    username = URLDecoder.decode(thisCookie.getValue(), "euc-kr");
   }
   else if(thisCookie.getName().equals("job")) {
    job = URLDecoder.decode(thisCookie.getValue(), "euc-kr");
   }
  }
 
  // 화면에 출력
  out.println("<html>");
  out.println("<head><title>쿠키확인</title></head>");
  out.println("<body>");
  out.println("이름 : " + username + "<br>");
  out.println("직업 : " + job + "<br>");
  out.println("</body>");
  out.println("</html>");