/ JSP

13. 쿠키

SEOUL G-캠프

0. 목차



Chapter13. 쿠키

Ch13 - 1. 쿠키란?

Ch13 - 2. 쿠키 문법



Ch13 - 1. 쿠키란?


▶ 쿠키란?

▷ 웹 브라우저의 요청과 응답, 그 후 관계 종료
  • 웹 브라우저 -데이터 요청/응답- 서버 –→ 서버와 웹 브라우저 관계 종료
  • 이렇게 웹 브라우저에 응답 후 관계를 끊는 것은 http 프로토콜의 특징
▷ 서버와 웹 브라우저 관계 종료 이후 연결이 끊어졌지만
▷ 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용
  • 쿠키 생성 장소 : 서버
  • 쿠키 저장 장소 : 클라이언트 측에 특정 정보 저장
▷ 쿠키의 특징
  • 서버에 요청 할 때마다 쿠키의 속성 값을 참조 또는 변경 가능
  • 쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있음



Ch13 - 2. 쿠키 문법


▶ 쿠키 사용 과정

▷ 쿠키는 서버에서 생성되고, 클라이언트 측에 전송되어 저장 됨


Cookie cookie = new Cookie("cookie 이름", "cookie 값");


▶ 쿠키 관련 메서드 : set

▷ setMaxAge()
  • 쿠키 유효기간 설정
▷ setpath()
  • 쿠키 사용의 유효 디렉토리 설정
▷ setValue()
  • 쿠키 값 설정
▷ setVersion()
  • 쿠키 버전 설정

▶ 쿠키 관련 메서드 : get

▷ getMaxAge()
  • 쿠키 유효 기간 정보를 얻음
▷ getName()
  • 쿠키 이름을 얻음
▷ getPath()
  • 쿠키사용의 유효 디렉토리 정보를 얻음
▷ getValue()
  • 쿠키의 값을 얻음
▷ getVersion()
  • 쿠키 버전을 얻음

▶ 쿠키 메서드 실습1 : 쿠키 사용 과정

▷ 쿠키 생성 : cookieset.jsp
// cookieset.jsp

<body>

	<%
		Cookie cookie = new Cookie("cookieN", "cookieV"); // 쿠키 객체 생성
		cookie.setMaxAge(60*60); // 쿠키 속성 먹임, 1시간 동안만 쿠키 살아있음
		response.addCookie(cookie); // 쿠키 응답 객체에 탑재
	%>
	
	<a href="cookieget.jsp">cookie get</a> // cookie get 클릭 시, 쿠키 꺼내는 파일로 이동
	
</body>


▷ 쿠키를 받아 사용 : cookieget.jsp
// cookieget.jsp

<body>

	<%
		Cookie[] cookies = request.getCookies(); // cookieset.jsp에서 생성 한 쿠키를 가져옴
	    
	    // for문으로 쿠키의 이름과 값을 출력
		for(int i=0; i<cookies.length; i++) {
			String str = cookies[i].getName();
			if(str.equals("cookieN")) {
				out.println("cookies[" + i + "] name : " + cookies[i].getName() + "<br />");
				out.println("cookies[" + i + "] value : " + cookies[i].getValue() + "<br />");
				out.println("=====================<br />");
			}
		}
	%>

<a href="cookiedel.jsp">cookie delete</a> // 클릭 시, 쿠키 삭제하는 페이지로 이동

</body>


▷ 쿠키 삭제 : cookiedel.jsp
// cookiedel.jsp

<body>

	<%
		Cookie[] cookies = request.getCookies(); // set 되어있는 쿠키를 가져 옴
		
		// 현재 set 된 쿠키의 이름을 띄우고 setMaxAge를 0으로 줌으로 0초 살아있게 만듦, 즉 쿠키를 소멸시킴
		for(int i=0; i<cookies.length; i++) {
			String str = cookies[i].getName();
			if(str.equals("cookieN")) {
				out.println("name : " + cookies[i].getName() + "<br />");
				cookies[i].setMaxAge(0);
				response.addCookie(cookies[i]); // 쿠키를 삭제했으니 속성을 변경, 다시 응답 객체에 쿠키 탑재
			}
		}
	%>
	
	<a href="cookietest.jsp">쿠키확인</a> // 클릭 시, 쿠키가 어떻게 설정 되어 있는 지 

</body>


▷ cookietest.jsp
// cookietest.jsp

<body>

	<%
		Cookie[] cookies = request.getCookies(); // set 되어있는 쿠키를 가져 옴
		
		// 쿠키가 있으면 쿠키의 이름과 값을 출력, cookieN은 삭제 되어있기 때문에 디폴트로 설정 된 쿠키가 나옴
		if(cookies != null) {
			for(int i=0; i<cookies.length; i++){
				out.println(cookies[i].getName() + "<br />");
				out.println(cookies[i].getValue() + "<br />");
			}
		}
	%>

</body>


  • 쿠키 객체 생성 » 쿠키 속성 설정 » 쿠키 response 객체에 탑재
  • 쿠키 가져다 쓰려면 request 객체를 통해 get
  • 가져다 쓰고 쿠키 속성 변경하면 다시 response 객체에 탑재 시켜주기
    • response 객체에 쿠키를 탑재 시켜 주어야 request 가능


▶ 쿠키 메서드 실습2 : 로그인

▷ id/pw 입력 창 : login.html
// login.html
 
<body>

	<form action="loginOk.jsp" method="post">
		아이디 : <input type="text" name="id" size="10"><br />
		비밀번호 : <input type="password" name="pw" size="10"><br />
		<input type="submit" value="로그인">
	</form>
	
</body>


▷ id/pw 확인 : loginoOk.jsp
// loginoOk.jsp

<body>
	<%!
		String id, pw;
	%>
	<%
		id = request.getParameter("id");
		pw = request.getParameter("pw");
		
		if(id.equals("abcde") && pw.equals("12345")) { // id : abcde, pw : 12345 라고 가정하고, id와 pw가 일치 시
			Cookie cookie = new Cookie("id", id); // 쿠키에 id 객체 생성
			cookie.setMaxAge(60); // 60초 동안 쿠키 살아있음, 쿠키 속성 설정
			response.addCookie(cookie); // 쿠키 응답 객체에 탑재
			response.sendRedirect("welcome.jsp");
		} else {
			response.sendRedirect("login.html"); // id : abcde, pw : 12345 라고 가정하고, id와 pw가 불일치 시
		}
	%>

</body>

login.html에서 로그인에 성공해서 welcome.jsp로 가든
로그인에 실패해서 다시 login.html로 초기화 되든
모두 loginoOk.jsp를 거침

▷ 로그아웃 시 : loginout.jsp
// loginout.jsp

<body>
	
	<%
		Cookie[] cookies = request.getCookies();
		
		if(cookies != null) {
			for(int i=0; i<cookies.length; i++) {
				if(cookies[i].getValue().equals("abcde")){
					cookies[i].setMaxAge(0); // 쿠키 속성 변경, 쿠키 생존 시간 0초
					response.addCookie(cookies[i]); // 속성 변경 했으므로 응답 객체에 다시 올려 줌
				}
			}
		}
		
		//response.sendRedirect("login.html");
		response.sendRedirect("cookietest.jsp"); // 쿠키 삭제 된 거 확인
	%>
	
</body>


▷ 로그인 시 : welcome.jsp
// welcome.jsp

<body>

	<%
		Cookie[] cookies = request.getCookies();
	
		for(int i=0; i<cookies.length; i++) {
			String id = cookies[i].getValue(); // 로그인 성공하면, 쿠키 값을 불러 옴
			if(id.equals("abcde")) out.println(id + "님 안녕하세요." + "<br />");
		}
	%>
	
	<a href="logout.jsp">로그아웃</a>
	
</body>