Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


쿠키에 한글이 들어갈 경우 예제 서블릿
 
보통 쿠키에 우리가 식별할 수 있는 정보등을 이용하여 클라이언트 사용자의 브라우져를 이용할 수 있는데 한글에 대한 처리를 어떻게 할것인지 간략한 예제를 통해서 알아본다. ( 2003/03/06 ) 148
Written by ienvyou - 최지웅
1 of 1
 

각각의 Engine Vendor와 제품에 따라 한글권인 우리나라에서는 글자가 깨지는 현상을 자주
보게 된다. 쿠키 또한 마찬가지이며, 꼭 쿠키에만 국한된 문제가 아니라고 본다.
여기서는 해당되는 쿠키값에 한글을 세팅시키며, 쿠키를 생성하는 방법을 보도록 한다.
한글값을 세팅시키기 위해 데이터가 전송되어질때의 encoding방법과 decoding방법을 이용하여
x-www-form-urlencoded 형태로 스트링을 전환하여 한글이 깨지는 현상을 방지하도록 한다.


아래는 쿠키를 생성하는 서블릿측의 소스코드이다.




import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.net.*;

public class SetCookie extends HttpServlet {
	
public void doGet(HttpServletRequest req,HttpServletResponse res) 
	throws ServletException,IOException {
	res.setContentType("text/html; charset=euc-kr");
	PrintWriter out = res.getWriter();
	
	out.println("");
	out.println("Simple Korean Cookie Example");
	
	//Cookie Creation
	String str = "안녕하세요? javapattern입니다";
	Cookie ck = new Cookie("javapattern", URLEncoder.encode(str));
	
	//Expire Age Setting
	ck.setMaxAge(500);

	//Cookie setting
	res.addCookie(ck);
	out.println("" + str + "을 쿠키에 세팅시켰습니다");
	out.println("한글값을 쿠키로 세팅시킵니다.\n");
	out.println("GetCookie Servlet");
	out.close();
}
};

쿠키값은 new Cookie()에 의하여 생성되며, 한번에 4K씩 20개의 쿠키값을 클라이언트의 
브라우져에 저장 시킬 수 있다. 
단 클라이언트의 보안영역에서 쿠키 설정을 할 수 있도록 되어 있어야 한다는 조건이 있다
java.net package에는 해당 데이터타입을 encoding할수 있는 URLEncoder를 제공하고 있으며, 
그것을 또한 역으로 변환시킬수 있는 URLDecoder를 제공한다.
이제 클라이언트에서부터 쿠키값을 가져오는 코드를 보도록 하자.


import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.net.*;

public class GetCookie extends HttpServlet {
	
public void doGet(HttpServletRequest req,HttpServletResponse res) 
	throws ServletException,IOException {
	//Get Cookies
	Cookie all[]=req.getCookies();

	res.setContentType("text/html; charset=euc-kr");
	PrintWriter out = res.getWriter();
	
	out.println("");
	out.println("Simple Korean Cookie Example");
	
	out.println("Display Cookies Values");
	for(int i=0;i " + all[i].getName()+" : " + URLDecoder.decode(all[i].getValue())+"");
	}
	


	out.println("쿠키 한글테스트 끝");
	out.close();
}
};



쿠키는 Cookie all[]=req.getCookies();의 형태로서 저장시켜놓은 모든 쿠키값을 가져오도록 한다.
쿠키는 생각과 달리 굉장히 단순하게 쓸수 있고 가져올수 있다.
오늘은 간단하게 살펴보았으나, 이런 간단한 코드도 간과하고 지나서는 안될것이다.


Written by Carouser : 2001-05-14
 
1
References
 
http://java.sun.com/servlet
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD