WHAT'S COOKIE
useful links :
1. what's session
세션은 일정한 시간동안에 서블릿에 접속하는 사용자(브라우저)를
확인할 있는 방법을 제공합니다.
즉 서블릿이 어떠 클리언트가 request를 한 것인지를 알수 있죠.
세션을 하나 만들면 여러 개의 서블릿에서 공유해서 사용할 수 있습니다.
쿠키가 name=value 형식으로 사용되는 것처럼 세션도
자바 오브젝트를 name=value 형식으로 가질 수 있습니다.
쿠키와 달리 값들이 서버쪽에서 관리됩니다.
세션은 쿠키를 이용해서 구현됩니다. 세션ID가 쿠키로 저장되고
name=value는 서버에 저장됩니다.
쿠키를 지원하지 않는
브라우저를 위하여 Link에 세션 ID를 붙여서 사용할 수 도 있습니다.
즉 세션을 이용하면 쿠키를 지원하지 않거나 사용하지 않는 브라우저에서도
세션 관리를 할 수 있습니다.
저도 배우는 중이라 두서없이 설명했네요....
다음을 참고하면 도움이 될겁니다.
http://java.sun.com/docs/books/tutorial/servlets/client-state/index.html
2.setting cookie
한글로 encoding을 바꾸기 전에 Mime type 설정시 다음과 같이 하세요
res.setContentType("text/html; charset=euc-kr");
PrintStream out = new PrintStream(res.getOutputStream());
그리고 Cookie 설정은 Import 한후
Cookie 변수 지정을 한다음 쿠키값을 설정하면 됩니다.
import sun.servlet.http.Cookie;
.
..
Cookie c,c1;
c = new Cookie("userid","xxx");
c1= new Cookie("paswd","xxx");
c.setComment("cookie test");
c.saveCookie(res);
c1.saveCookie(res);
위의 res변수는 HttpServletResponse parameter인걸 아시죠
그리고 여기 게시판에 관련된 내용들이 많이 있습니다.
참고하세요
JSDK 2.0에서의 쿠키 사용법
우선, 다음은 김용진 님이 제시하신 Cookie 사용법입니다.
import sun.servlet.http.Cookie;
.
..
Cookie c,c1;
c = new Cookie("userid","xxx");
c1= new Cookie("paswd","xxx");
c.setComment("cookie test");
c.saveCookie(res);
c1.saveCookie(res);
JSDK 2.0 미만이나 JWS 1.0.x 를 사용하시는 분들은
위에 처럼 하면 됩니다. (저도 그러니까요...)
그러나, JSDK 2.0 이나 JWS 1.1.x 를 사용하시는 분들은
아래 처럼 조금 고쳐 주어야 합니다.
import javax.servlet.http.Cookie; // 클래스 Cookie 의 소속이 달라졌음.
.
..
Cookie c,c1;
c = new Cookie("userid","xxx");
c1= new Cookie("paswd","xxx");
c.setComment("cookie test");
// JSDK 2.0 에서는
// Cookie.saveCookie 메쏘드와 Cookie.deleteCookie 메쏘드 가 없어졌으며,
// Cookie.saveCookie 대신에 javax.servlet.http.HttpServletResponse.addCookie 메쏘드를
// 사용해야 한다.
res.addCookie(c);
res.addCookie(c1);
3. cookie에 사용 못하는 문자
빈칸은 쿠키값에 사용하지 못하는 문자 중의 하나입니다.
빈칸있는 쿠키값에 생성할려면
BASE64 인코딩이나 URL 인코딩 이런걸 사용합니다.
쿠키 가져 올 때는 당연히 디코딩을 해야 겠지요...
4. save multiple cookies
JSDK2.0을 사용하지 않는가 보군요
c1.saveCookie(response);
는 Cookie의 method에 없는 것이더군요.
JSDK 2.0이 있으니 2.0을 사용하시지요
아래와 같이 사용하면 됩니다.
Cookie c1 = new Cookie("agdffgsdg","aaaaaaaaaaaaaaa");
Cookie c2 = new Cookie("b35354355","bbbbbbbbbbbbbbb");
Cookie c3 = new Cookie("c453fsfee","ccccccccccccccc");
httpservletresponse.addCookie(c1);
httpservletresponse.addCookie(c2);
httpservletresponse.addCookie(c3);
5. connection pool
저도 그문제 때문에 고민을 많이 하였는데.
어떠 외국 사이트에서 Connection POOL을 이용하더군요..
그러니까 초기 연결시에 Connection을 여러개 하여 stack나 배열에 저장하여 놓고 매-
연결이
이루어 질때마다 connection을 열지 않고 stack에서나 배열에서 가져오더군요...
그리고 맨마지막에 connection을 종료하구요..
다음은 이런 경우의 제가 작업하던 소스입니다.
customregister.java
Last modified: Tue Aug 31 21:05:25 1999