쿠키가 날 힘들게 함...

잘근잘근 씹어주겠어

 

우선 쿠키와 세션 ! 그 두놈은 비슷하면서도 다르다

쿠키와 세션의 공통점  : 클라이언트의 접속상태를 유지하기 위한 기술!

상태유지 정보가 클라이언트에 저장(브라우저나 사용자 pc) 
http 프로토콜은 클라이언트의 요청이 있어야 웹 문서(서버)가 브라우저에 응답을 해줌
근데 응답을 하면 연결은 끊김(왜냐면 수백개의 사용자들이 있을텐데 계속연결상태면 과부화 걸리지..)
근데 현실과는 뭔가 다름?( 우리가 스스로 연결 끊을 때 까지 연결상태 중인데? 이걸 유지하는 기술이 바로 쿠키/세션 !!)

 

쿠키

요청하고 응답할 때 응답 헤더에 쿠키를 구워서 보냄
(응답할 때 준 쿠키가 다시 요청했을 때 받은 쿠키와 같다면 얘가 계속 접속해 있구나를 인식하게 됨)
브라우저에 저장되었다면 브라우저 종료 시 삭제됨
근데 이게 왔다갔다할 때 중간에서 스나이핑 될 수도 있기도 하고, 아무튼 보안에 취약해서 요새 잘 안씀!

 

세션은 좀이따가 정리하긴 할 건데 여기서 먼저 간단하게 쿠키랑 비교하면서 정리하고 넘어가쟈

세션(브라우저 1개가 1개의 세션) 
서버의 세션영역에 중요정보를 저장함
웹 브라우저를 열어 서버에 접속하고 다시 웹브라우저를 닫아서 서버와의 연결을 종료하는 하나의 단위를 세션이라 함
ex) cmd 2개의 창을 열고 둘 다 scott 계정에 접속해도 두개가 commt하지 않는 이상 연동되지 않음
    세션이 각각 다른 총 2개가 있는거임!

 

[Cookie]

쿠키는 해더에 정보가 들어 있다.

그럼 쿠키를 직접 구워보자

 

1. 쿠키설정하기 (직접 굽기)

<%
	//1. 쿠키객체생성 : new Cookie("쿠키명","쿠키값");
	Cookie cookie = new Cookie("UserID","KOSMO");
	//2. 쿠키가 적용되는 PATH 설정 (웹 어플리케이션 전체에 설정하는 법!!!)
	cookie.setPath(request.getContextPath());
	//3. 쿠키 유효시간 설정 (브라우저가 아닌 pc에 저장이 됨- 파일로 저장 )
	cookie.setMaxAge(30);    //30초 후에 내가구운 UserID : KOSMO 사라짐
	//4. 생성된 쿠키를 응답헤더에 설정 : addCookie(); 그냥 실행하면 네트워크에서 요청/응답 헤더 정보를 볼 수 없음 새로고침을 한 번 하니  그거 감안해야함 !
	response.addCookie(cookie);			 
%>

	클릭으로 페이지 이동 후 쿠키 값 확인	
    <a href="CookieResult.jsp">쿠키값 확인</a>

 

 

2.클릭으로 페이지를 이동 하나 후 쿠키값을 확인 해 보자

 이건 클릭으로 요청을 한 것이니까 request객체로 가져올 수 있다!!

<% 
	//요청헤더에 실려 보내니까 request로 가져옴
	Cookie[] cookies= request.getCookies();
	if(cookies !=null ){  // null 체크는 꼭
		for(Cookie cook: cookies){
		//쿠키명 얻기
		String name = cook.getName();
		//쿠키값
		String value = cook.getValue();
		out.println(String.format("<li>%s : %s</li>",name,value));
        }				
     }			
%>

request 해더에 있지?!

출력도 잘 됨! 저 맨 위에있는거 오늘 배우면서 세션객체들 때문에 남아 있는거 (컴퓨터 쿠키 유효시간을 24시간으로 설정 해 놨음... )

+ Recent posts