티스토리 뷰

학교공부/JSP

chapter - 14 (cookie)

날따라해봐요요롷게 2021. 5. 17. 14:13

- 쿠키의 개요

- 쿠키 생성

- 쿠키 정보

- 쿠키 삭제

 

- 쿠키의 개요

 : 쿠키는 세션과 마찬가지로 클라이언트와 웹 서버 간의 상태를 유지하는 방법이다.

하지만 세션과의 차이점이 있다. 세션은 클라이언트에게 주어진 세션에 대한 정보를 웹 서버에 저장을 하는 반면에 쿠키는 클라이언트 웹 브라우저에 저장을 한다. 따라서 쿠키는 웹 서버에 부하를 줄여준다.

클라이언트 웹 브라우저에 저장함으로써 웹 서버에 request 시 저장되어 있는 쿠키를 웹 서버가 읽어 클라이언트의 상태를 결정한다. (로그인 상태... 등등)

하지만 쿠키는 세션과 다르게 보안에 취약하다는 단점이 있다.

 

# 쿠키의 동작 과정

- 쿠키 생성 단계 : 쿠키는 웹 서버 측에서 생성을 한다. 생성된 쿠키는 response 데이터와 함께 웹 브라우저에 전송된다.

- 쿠키 저장 단계 : 웹 브라우저는 전송된 쿠키를 쿠키 저장소에 저장. 쿠키의 종류에 따라 메모리, 파일로 저장된다.

- 쿠키 전송 단계 : 웹 브라우저는 저장 된 쿠키를 요청이 있을 때마다 웹 서버에 전송. 웹 서버는 전송된 쿠키를 사용.

 

JSP 페이지는 쿠키 기능을 사용하기 위해 Cookie 클래스를 사용한다.

#Cookie 클래스의 메소드

(get)

- getComment() / String / 쿠키에 대한 설명 반환

- getDomain() / String / 쿠키의 유요한 도메인 정보 반환

- getMaxAge() / int / 쿠키의 사용 가능 기간에 대한 정보

- getName() / String / 쿠키의 이름을 반환

- getPath() / String / 쿠키의 유효한 디렉터리 정보를 반환

- getSecure() / boolean / 쿠키의 보안 설정을 반환

- getValue() / String / 쿠키의 설정된 값을 반환

(set)

- setComment(String) / void / 쿠키에 대한 설명을 설정

- setDomain() / void / 쿠키의 유요한 도메인 정보 설정

- setMaxAge() / void / 쿠키의 사용 가능 기간에 대한 설정

- setPath() / void / 쿠키의 유효한 디렉터리 정보를 설정

- setSecure() / void / 쿠키의 보안 설정을 설정

- setValue() / void / 쿠키의 설정된 값을 설정

 

## 쿠키와 세션의 차이

구분 쿠키 세션
사용 클래스 Cookie 클래스  HttpSession 인터페이스
저장 형식 텍스트 Object
저장 장소 클라이언트 웹 브라우저 서버(세션 아이디만 클리이언트에게 저장)
종료시점 쿠키 저장 시 설정 (설정 하지 않을 시 웹 브라우저 종류시 소멸) 알 수 없음
리소스 클라이언트 리소스 사용 서버의 리소스 사용
보안 클라이언트 저장으로 보안에 취약 서버 저장으로 상대적으로 안정적

- 쿠키 생성

 : 쿠키를 사용하기 위해서는 반드시 쿠키 생성!

쿠키 생성을 위해서는 Cookie() 메소드를 사용, 쿠키 생성 후 => response 내장 객체의 addCookie() 메소드로 쿠키를 설정

Cookie Cookie(String name, String value)
// 사용
Cookie cookie = new Cookie("memberId", "admin");
response.addCookie(cookie);

매개변수 name 은 쿠키 식별을 위한 이름, value는 쿠키 값

쿠키 객체를 생성한 후 addCookie() 메소드를 이용하여 해당 객체를 전송한다.

 

	<form action="cookie01_process.jsp" method="post">
		ID : <input type="text" name="id">
		PASSWORD : <input type="text" name ="pwd">
		<input type="submit" value="전송" > 
	</form>
    /////////////////////////////////
    	<%
		String user_id = request.getParameter("id");
		String user_pwd = request.getParameter("pwd");
		
		if(user_id.equals("admin") && user_pwd.equals("1234")){
			Cookie cookie_id = new Cookie("userID", user_id);	// 쿠키 생성 (아이디)
			Cookie cookie_pwd = new Cookie("userPWD", user_pwd);// 쿠키 생성 (비밀번호)
			response.addCookie(cookie_id);				// 쿠키 전송
			response.addCookie(cookie_pwd);				// 쿠키 전송
			out.println("쿠키 생성에 성공!");
			out.println(user_id + "님 환영!");
			
		} else {
			out.println("쿠키 생성에 실패!");
		}
	%>

 

 

- 쿠키 정보

: 생성된 쿠키의 정보를 얻기 위해서는 request 내장 객체의 getCookie() 메소드를 사용하여 쿠키의 객체 를 얻어와야 한다. 그 후 getName(), getValue() 메소드를 사용하여 쿠키의 이름과 값을 얻어온다.

 

# 쿠키의 객체 얻기

: 클라이언트 웹 브라우저에 저장된 쿠키를 얻기 위해서는 request 내장 객체의 getCookie() 를 사용.

쿠키 객체를 배열 형태로 가져오는 방법.

Cookie[] request.getCookies()
//사용
Cookie[] cookies = request.getCookies();

# 쿠키 객체의 정보 얻기

: 쿠키를 가져오면 쿠키의 객체를 이용하여 해당 이름과 값을 얻어온다. => getName(), getValue() 사용

Cookie[] cookies = request.getCookies();

for(int i = 0; i<cookies.length; i++) {
	out.pringln(cookies[i].getName() + " : " + cookies[i].getValue());
}
	<%
		Cookie[] cookies = request.getCookies();
		out.println("현재 설정된 쿠키의 개수 => " + cookies.length + "<br>");
		out.println("===========================================<br>");
		
		for(int i = 0; i<cookies.length; i++){
			out.println("설정된 쿠키의 속성 이름 ["+i+"] : " + cookies[i].getName() + "<br>");
			out.println("설정된 쿠키의 속성 값 ["+i+"] : " + cookies[i].getValue() + "<br>");
			out.println("============================================<br>");
		}
	%>
    /////////////////////////////////////////// 출력
    현재 설정된 쿠키의 개수 => 3
 ===========================================
설정된 쿠키의 속성 이름 [0] : userID
설정된 쿠키의 속성 값 [0] : admin
 ============================================
설정된 쿠키의 속성 이름 [1] : userPWD
설정된 쿠키의 속성 값 [1] : 1234
 ============================================
설정된 쿠키의 속성 이름 [2] : JSESSIONID
설정된 쿠키의 속성 값 [2] : E16EA88184BE110DF4C30B188031833F
 ============================================

- 쿠키 삭제

 : cookie 클래스는 쿠키를 삭제하는 기능이 없다. 따라서 유효 기간을 0으로 설정하면 쿠키를 삭제할 수 있다.

유효 기간을 결정하는 메소드는 setMaxAge() 이다.

void setMaxAge(int age);
//// 사용
Cookie cookie = new Cookie("memberID", "admin");
cookie.setMaxAge(0); // 유효 기간을 0으로 설정 ==> 삭제!
response.addCookie(cookie);

객체를 생성하여 유효기간을 0으로 설정하고 해당 객체를 보내준다. ==> 클라이언트 웹 브라우저에서 삭제!

 

 

 

	<%
		Cookie[] cookies = request.getCookies();
		for(int i =0; i<cookies.length; i++){
			cookies[i].setMaxAge(0);	// 쿠키 정보 삭제
			response.addCookie(cookies[i]); // 삭제 객체 보내기
		}
		response.sendRedirect("cookie02.jsp");
	%>

<출처 : 쉽게 배우는 jsp 웹 프로그래밍>

 

20000~

'학교공부 > JSP' 카테고리의 다른 글

JDBC  (0) 2021.06.13
chapter - 13 (세션)  (0) 2021.05.16
JSP - 8  (0) 2021.04.17
JSP - 10  (0) 2021.04.15
JSP - 9  (0) 2021.04.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함