티스토리 뷰

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

out.print("<h1>Cookie 전송!</h1>");

out.close();

// 쿠키생성

Cookie c1 = new Cookie("id","guest"); 

Cookie c2 = new Cookie("code","1004");

Cookie c3 = new Cookie("subject","java");

// 쿠키 유효시간 설정(초)

// 유효시간==0 => 쿠키 삭제

// 유효시간==(음수값) 또는 default => 브라우저 동료됨과 동시에 삭제

c1.setMaxAge(60*60*60);

c2.setMaxAge(60);

c3.setMaxAge(60*60*3);

// 쿠키 전송(Client로)

response.addCookie(c1);

response.addCookie(c2);

response.addCookie(c3);



처음에 쿠키 생성 예제를 위와 같이 작성하였다.

out.close() 메서드가 PrintWriter 출력스트림을 close 하는 것이라고 생각해서 "Cookie 전송" 이라는 응답을 출력하고 바로 닫아주었다.

그리고 쿠키 생성 후 response를 통해 쿠키를 저장하는 데에는 PrintWriter 출력스트림이 필요없을 것이라고 생각하였다. 하지만 out.close를 해줘버리면 response가 응답하는 스트림을 모두 닫아버린다는 것을 알게되었다. 따라서 out.close는 맨마지막에 해주니 문제가 해결되었다.


[펌]

http://www.silverwolf.co.kr/java/9924


PrintWriter는 사실 ServletOutputStream을 둘러싼(wrap) 것입니다. 즉 PrintWriter는 내부에 ServletOutputStream에 대한 참조를 가지고 있으며, 작업을 ServletOutputStream에게 부탁합니다. 사실 클라이언트에 대한 출력스트림은 오직 하나 밖에 없습니다. PrintWriter는 이 스트림에다가 좀더 쓰기 쉽게, 문자를 쉽게 핸들링할 수 있는 메소드들로 ServletOutputStream을 꾸민 것으로 생각하면 됩니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함