Back-End/JSP

[JSP] 쿠키(Cookie), 세션(session)

챌링킴 2021. 7. 21. 21:28
반응형

1) 쿠키(Cookie)

- 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키를 헤더에 담아서 전송한다.

 

 

2) 쿠키(Cookie)의 장단점

- 클라이언트의 일정 폴더에 정보를 저장하기 때문에 웹 서버의 부하를 줄일 수 있다.

- 정보가 사용자 컴퓨터에 저장되기때문에 보안의 위협을 받을 수 있다.

- 데이터 저장 용량에 한계가 있다. (소용량, 과자 부스러기처럼 작은 값이라 하여 쿠키라고 한다.)

- 일반 사용자가 브라우저 내의 기능인 쿠키 차단을 사용하면 무용지물이 된다.

 

 

3) 쿠키 동작 방식

- 쿠키 생성 > 쿠키 저장 > 쿠키 전송

 

1. 쿠키 생성

- 웹 서버에서 쿠키를 생성하고 쿠키에 응답 데이터를 담아 웹 브라우저에 전송한다.

 

2. 쿠키 저장

- 웹 브라우저는 응답 데이터를 담고 있는 쿠키를 메모리나 파일로 저장한다.

 

3. 쿠키 전송

- 웹 브라우저는 쿠키 요청이 있을 때마다 웹 서버에 전송을 한다.

- 웹 서버는 그 쿠키를 사용해서 필요한 작업을 수행할 수 있다.

 

 

4) 쿠키 생성 및 사용방식

 

1. 쿠키를 생성하고 response 객체에 담는다.

	// 쿠키 생성
	Cookie cookie = new Cookie("쿠키이름","쿠키값");

	response.addCookie(cookie);
	
	// 한글 깨질 경우 인코딩하여 값 추가하기
	String value = URLEncoder.encode("맛있따.","UTF-8");
	Cookie cookie2 = new Cookie("homerunball",value);

 

2. 쿠키 유무를 확인 후, 쿠키 값을 얻어온다.

		String check = request.getHeader("Cookie");
		// "Cookie"라는 이름의 과자박스가 있는지 체크
		if (check != null) {
			Cookie[] cookies = request.getCookies();
			for (int i = 0; i < cookies.length; i++) {
				out.print(cookies[i].getName() + " : "); // key가 name, 쿠키의 이름
				out.print(cookies[i].getValue()); // 쿠키의 값
				out.print("<br>");
			}
		}

 

3. 쿠키 삭제하기

		String check = request.getHeader("Cookie");
		if(check != null){
			Cookie[] cookies = request.getCookies();
			for(Cookie cookie : cookies){
				if(cookie.getName().equals("ggobuk")){
					out.print(cookie.getName()+" : ");
					out.print(cookie.getValue()+"<br>");
					cookie.setMaxAge(0);
					response.addCookie(cookie);
				}
			}
		}

- setMaxAge(0) : 괄호 안의 숫자는 초 단위를 뜻한다.

- 음수를 입력하면 브라우저 종료시 쿠키 삭제를 뜻한다.(default)

- 쿠키를 수정하거나 삭제하는 경우에는 다시 response.addCookie(쿠키객체)를 해주어야 한다.

 

 

5) 세션(session)이란?

- 내장객체로서 브라우저마다 한개씩 존재하고 고유한 SessionID 생성 후 정보를 추출한다.

 

 

6) 세션의 장단점

- JSP에서만 접근할 수 있기 때문에 보안성이 좋고 저장 용량의 한계가 거의 없다.

- 서버에 데이터를 저장하므로 서버에 부하가 걸릴 수 있다.

 

 

 

쿠키보다 세션을 쓰는 것이 더 안정적이고 안전하다.
반응형

'Back-End > JSP' 카테고리의 다른 글

[JSP] MVC 패턴, Front-Controller 패턴  (0) 2021.07.28
[JSP] EL문과 JSTL  (0) 2021.07.26
[JSP] 자바빈즈란?  (0) 2021.07.20
[JSP] JSON 개요, 라이브러리 다운로드하기  (0) 2021.07.19
[JSP] Ajax와 XMLHttpRequest 객체  (0) 2021.07.19