Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

쿠키(cookie)란?? (feat. JSP에서 쿠키 설정(cookie )하는 법) 본문

Servlet & JSP

쿠키(cookie)란?? (feat. JSP에서 쿠키 설정(cookie )하는 법)

개발 일기 2021. 8. 12. 21:56

안녕하세요.

 

오늘은 웹 페이지를 개발 할 때 중요하게 사용되는 쿠키에 대해 간단히 정리해보겠습니다.

 

 

우선,

 

웹의 근간이 되는 HTTP(HyperText Transfer Protocol) 프로토콜은 웹페이지나 이미지를 가져오는데

매우 이상적인 프로토콜이지만, 서버측 응용프로그램(CGI, Servlet, JSP, ASP, PHP 등)에서

생성되는 상호 대화적인 내용을 처리하는데는 여러 가지 문제가 있다.

 

HTTP 프로토콜은 브라우저에서 요청이 있을 때 마다 새로운 네트워크 연결이 이루어지기 때문에

사용자의 요청에 네트워크 연결이 지속되지 않으므로 클라이언트의 요청을 서로 구분 할 수가 없으며,

클라이언트의 상태정보를 저장 할 수 없다.

 

즉, 상태가 없으면 예를들어 네이버에 로그인을 하고 네이버 뉴스를 들어가는 순간

네이버의 로그인 정보가 사라지게 된다고 생각해보면 된다.

 

이에따라, 이러한 문제를 해결(상태정보 유지)하기 위해 쿠키와 세션이 생겼다.

 

 

쿠키는 클라이언트의 상태 정보를 유지하기 위한 방법으로 네스케이프에서 제안된 기술로
웹응용프로그램에서 필요에 따라


1) 클라이언트의 정보를 텍스트 형태로 클라이언트(웹브라우저)에게 전송하고(응답메세지의 헤더를 통해),

2) 웹 브라우저는 전송받은 텍스트파일(쿠키)을 메모리에 로딩(저장)하고 있다가, 다시 쿠키를 전송한 해당
   사이트에 방문할 경우 웹서버에게 제출하도록 한다.(요청메세지의 헤더를 통해)

3) 웹서버는 전달 받은 쿠키의 값을 읽어 들여 적절한 작업을 수행할 수 있다.

 

 

JSP에서 cookie 설정해보기

 

1. search (쿠키 생성 요청 과정)

<%@page import="java.net.URLDecoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%

	Cookie[] cookies = request.getCookies();
	String oldSearchKeyword="";
	if(cookies!=null){
		for(Cookie cookie:cookies){
			if(cookie.getName().equals("searchKeyword")){
				oldSearchKeyword=cookie.getValue();
				oldSearchKeyword = URLDecoder.decode(oldSearchKeyword, "UTF-8");
			}
		}
	}
	System.out.println(">>클라이언트가 전송한 쿠키정보:"+oldSearchKeyword+"["+request.getRemoteAddr()+"]");
	
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>쿠키읽기</h1><hr/>
	<form action="7-0.cookie_create.jsp">
		검색어:<input type="text" name="searchKeyword" 
			placeholder="검색어를 입력하세요" value="<%=oldSearchKeyword %>">
		<input type="submit" value="검색">
	</form>
</body>
</html>

- 요청 객체로부터 클라이언트가 전송한 쿠키 객체들얻기

 

 

--결과 화면

- 크롬 디버거로 페이지 확인 시 현재 페이지에 따로 설정된 cookie값이 없는 것 확인

- 검색어 입력 후 [검색] submit 진행 시 입력받은 검색어의 value값을 oldSearchKeyword로 해서 create로 넘김

 

 

2. create(쿠키 생성)

<%@page import="java.net.URLEncoder"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String searchKeyword = request.getParameter("searchKeyword");
	if(searchKeyword==null || searchKeyword.equals("")){
		response.sendRedirect("7-0.cookie_search.jsp");
		return;
	}
    
	String encodeSearchKeyword = URLEncoder.encode(searchKeyword, "UTF-8");

	Cookie searchKeywordCookie = new Cookie("searchKeyword",encodeSearchKeyword);

	searchKeywordCookie.setMaxAge(60*60*24); 

	response.addCookie(searchKeywordCookie);

	
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>검색결과[쿠키생성]</h1><hr>
<div>니안에 쿠키있다.</div>
<ol>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
	<li> 검색결과</li>
</ol>
<div>
	<a href='7-0.cookie_search.jsp'>다시검색[쿠키읽기]</a>
	<a href='7-0.cookie_delete.jsp'>쿠키삭제</a>
</div>
</body>
</html>

- searchKeyword의 값을 파라메타로 받아서 해당 데이터를 searchKeywordCookie의 쿠키 객체를 만들어 대입시킴

- 쿠키 객체의 유효기간 설정(setMaxAge)

- 응답 객체에 쿠키 추가

 

 

-- 결과 화면

- 검색어 입력 후 create 과정을 거쳐 searchKeyword 쿠키가 만들어진 것을 확인 할 수 있다.

- 해당 쿠키는 쿠키 삭제를 코드화해서 액션하거나 브라우져를 모두 꺼야지만 삭제가 가능하다.

 

 

3. delete(쿠키 삭제)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%

	Cookie[] cookies = request.getCookies();
	if(cookies!=null){
		for(Cookie cookie:cookies){
			if(cookie.getName().equals("searchKeyword")){
				cookie.setMaxAge(0);
				cookie.setValue("");

				response.addCookie(cookie);
			}
		}	
	}
    
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>쿠키삭제</h1><hr>
<div>
니안에 쿠키없다.
</div>
<div>
	<a href='7-0.cookie_search.jsp'>다시검색[쿠키읽기]</a>
</div>
</body>
</html>

- cookie 값을 얻고

- searchKeyword 쿠키 찾아서 setMaxAge(0)으로 설정

- 응답 객체에 추가

 

 

-- 결과 화면

- searchKeyword 쿠키가 크롬 디버거에서 사라진걸 확인

 

 

 

오늘은 cookie에 대해 알아보았습니다.

감사합니다.

Comments