개발자 미니민의 개발스터디

[JSP] 쿠키 설정 / 가져오기 (Cookie)

by mini_min

JSP

[JSP] 쿠키 설정 / 가져오기 (Cookie)

✔️ 쿠키란?

: 쿠키는 클라이언트에 대한 정보를 클라이언트의 하드디스크에 저장한 TEXT 파일이다.

: 쿠키는 텍스트 형태로 저장되기 때문에, 변조와 복사가 가능해서 보안성이 없다.

: 쿠키는 서버에서 사용자에게 편리한 기능을 많이 제공하기 위해 사용되고 웹 브라우저에 의해 관리된다.

: 일반적으로 웹 서버당 20개의 쿠키와 총 300개의 쿠키를 지원하며 쿠키는 각각 4KB 크기로 제한될 수 있다.

✨ 쿠키 정보는 javax.servlet.http.Cookie 클래스에 의해 관리된다.

 

👩‍💻 쿠키 설정하기

: 쿠키 설정 : 서버가 클라이언트 컴퓨터에 정보를 저장하는 것이다.

: 쿠키의 유효시간은 설정하지 않으면 기본적으로 브라우저 종료시 쿠키도 제거된다.

✨ 쿠키는 String 만 가능하다.

subject 란 이름과 java 라는 값을 가진 쿠키 설정

Cookie c1 = new Cookie("subject", "java");
response.addCookie(c1);

 

- 쿠키 유효시간을 설정할 수 있다.

Cookie c2 = new Cookie("subject2", "spring");
c2.setMaxAge(60*60); //쿠키 유효시간
response.addCookie(c2);

 

- 만약, 쿠키 값에 한글이 들어가면 반드시 인코딩 해줘야한다.

브라우저 종료시 사라지는 쿠키 유효시간 설정은 기본 -1 이다.

0 값을 주면, 쿠키 생성과 동시에 제거하는 것이다. 일반적으로 쿠기를 제거할 때 0으로 설정한다.

Cookie c3 = new Cookie("subject3", URLEncoder.encode("오라클", "utf-8"));
c3.setMaxAge(-1); //-1 은 브라우저 종료시 쿠키 제거(기본)
response.addCookie(c3);

 

- setPath : "/" 를 주면 모든 경로에서 쿠키에 접근 가능하도록 설정한다.

Cookie c4 = new Cookie("tel", "010-1111-1111");
c4.setPath("/"); // 모든 경로에서 쿠키 접근가능하도록 설정
response.addCookie(c4);

 

👩‍💻 쿠키 가져오기

getName() : 쿠키 이름 

getValue() : 쿠키 값

Cookie[] cc = request.getCookies();
if(cc != null){
    for(Cookie c: cc){
        String name = c.getName(); //쿠키 이름
        String value = c.getValue(); //쿠키 값
        if(name.equals("subject3")){
            value = URLDecoder.decode(value, "utf-8");
        }

        out.print("<p>" + name + ":" + value + "</p>");
    }
}

 

👩‍💻 쿠키 삭제하기

: 쿠키에 setPath 를 설정한 것은 setPath 를 동일하게 설정해줘야 삭제가 가능하다.

Cookie c1 = new Cookie("subject", null);
c1.setMaxAge(0);
response.addCookie(c1);

Cookie c2 = new Cookie("subject2", null);
c2.setMaxAge(0);
response.addCookie(c2);

Cookie c3 = new Cookie("subject3", null);
c3.setMaxAge(0);
response.addCookie(c3);

Cookie c4 = new Cookie("tel", null);
c4.setPath("/"); //패스 준건 패스 줘야지 삭제가 가능하다.
c4.setMaxAge(0);
response.addCookie(c4);

 

 

🔒 쇼핑몰 오늘 본 상품 목록 가져오기

: 특정 상품을 눌러서 상품 상세 페이지가 열렸을 때, 쿠키가 찍히도록 설정하면 오늘 본 상품 목록을 출력할 수 있다. 

 

- 쇼핑몰 상품 목록

<h3>쇼핑몰</h3>

<table border="1" style="width: 400px; border-collapse: collapse;">
	<tr height="30" align="center" bgcolor="#eee">
		<td width="250">상품명</td>
		<td>가격</td>
	</tr>
	
	<tr height="30" align="center">
		<td>
			<a href="sp1.jsp">컴퓨터</a>
		</td>
		<td>1,000,000</td>
	</tr>
		
	<tr height="30" align="center">
		<td>
			<a href="sp2.jsp">TV</a>
		</td>
		<td>1,100,000</td>
	</tr>
	
	<tr height="30" align="center">
		<td>
			<a href="sp3.jsp">핸드폰</a>
		</td>
		<td>1,800,000</td>
	</tr>
</table>
<hr>

 

- 상품별 쿠키 설정

Cookie c1 = new Cookie("sname1", URLEncoder.encode("컴퓨터", "utf-8"));
response.addCookie(c1);

 

- 쿠키 가져오기 ✨✨

Cookie[] cc = request.getCookies();
if(cc != null){
    for(Cookie c: cc){
        String name = c.getName(); //쿠키 이름
        String value = c.getValue(); //쿠키 값

        if(name.startsWith("sname")){
            value = URLDecoder.decode(value, "utf-8");
            out.print("<p> 오늘 본 상품 " + ":" + value + "</p>");
        }

    }
}

 

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기