04 JSP 세션 관리_쿠키

● 클라이언트 측 자원만을 사용하여 웹 서비스 요청 시 데이터를 첨부하여 전송

1.     쿠키의 동작 방식

○ 사용자가 특정 웹 사이트를 방문했을 때 서비스 사용에 필요한 데이터를 웹 서버의 요청에 의해 사용자의 컴퓨터 내 저장한 후 웹 클라이언트가 서비스를 다시 요청할 때 첨부하여 웹 서버에 전송하는 방식으로 진행

○ 웹 서버에 요청에 의해 생성

○ 한 번 설정되면 웹 브라우저는 설정된 쿠키의 사용기간이 만료되어 삭제되기 전까지 웹 서버에 요청을 보낼 때마다 쿠키로 설정한 데이터를 함께 전송

(1)   클라이언트가 웹 서버 측에서 요청에 대한 응답에 쿠키 정보를 첨부하여 전송

(2)   웹 브라우저는 웹 서버에게 전달받은 응답 내 쿠키를 종류에 따라 메모리나 파일에 저장

(3)   이후 웹 클라이언트가 쿠키가 저장된 웹 서버에게 다시 요청을 보낼 경우 키의 정보를 첨부하여 웹 서버에 전달

 

2.     쿠키 구성

 

 

 

 

■ 쿠키 이름과 값 설정 규칙

□ 쿠키의 이름은 아스키 코드의 알파벳과 숫자만을 포함할 수 있다.

□ 콤마(), 콜론。세미콜론。등호(), 공백('') 등의 문자는 포함될 수 없다.

□ ,로 시작될 수 없다.

□ 쿠키의 값이 바이너리(Binary) 값일 경우 BASE64 인코딩으로 처리해야 한다.

□ 쿠키의 값은 콤마( , ), 콜론(), 세미콜론( ; ), 등호( = ), 공백( ' ' ), 괄호( ( ) ) 등의 문자를 포함해야 할 경우 인코딩 처리가 필요할 수 있다.

3.     서블릿 API Cookie 클래스를 사용하여 쿠키 설정

1)    쿠키의 속성

 

2)    Cookie 클래스를 이용한 쿠키 생성과 사용

<%

Cookie cookie = new Cookie (name, value);

Response.addCookie (cookie)

%>

Cookie 객체를 클라이언트로 전송하기 위해 response 내장객체의 addCookie( )메서드를 사용하여 Cookie 객체를 첨부

■ 전송된 쿠키는 웹 클라이언트에 저장

■ 동일한 이름의 쿠키가 웹 클라이언트에 먼저 저장되어 있는 경우 추가된 쿠키로 덮어 쓰임

(1)   쿠키의 생성과 확인

-- CookieSet.jsp --

<%

Cookie cookie = new Cookie ("CookieTest", "Hello, Cookie!")

response.addCookie (cookie)

%>

<form action=”CookieChk.jsp" method="post">

<input type="submit" value="쿠키 확인 페이지"

</form>

-- CookieChk.jsp –

<%

Cookie [ ] cookies = request.getCookies 0 //쿠키 배열 받아서

if (cookies != null && cookies.length > 0) {

for (int i=0 i < cookies.length i++) {

if (cookies [i] .getName ().equals(“CookieTest")) {

// 저 이름의 쿠키 있는지 확인

%>

<h3>

쿠키의 이름 : <%=cookies [i] .getName() %> <br/>

쿠키의 값 : <%=cookies [i] .getValue() %> <br/>

쿠키의 유효시간 : <%=cookies [i] .getMaxAge() %> <br/>

</h3>

<%        }          }          } %>

</body>

 

(2)   쿠키 값 재설정

setValue( ) 메서드 : 생성한 쿠키의 기존 구성요소 값을 변경

<%

Cookie [] cookies = request.getCookies 0

if (cookies != null && cookies.length > 0) {

for (int i=0 i < cookies.length i++) {

if (cookies [i] .getName().equals("MyCookie")) {

cookies [i] .setValue(uMyCookie's value was changed!")

response.addCookie (cookies [i])

}           }          }          %>

 

(3)   쿠키의 삭제

Cookie 클래스에서는 쿠키의 삭제 기능을 수행하는 메서드를 제공하고 있지 않아 일반적인 방법으로는 클라이언트에 설정된 쿠키를 삭제할 수 없음

□ 쿠키의 삭제를 구현하기 위해서는 쿠키의 유효시간 설정에 사용되는 setMaxAge( ) 메서드에 쿠키의 유효시간을 0으로 지정하는 다소 편법적인 방식을 사용

cookies [i] .setMaxAge (0)

response.addCookie (cookies [i])

 

(4)   쿠키의 도메인 설정

setDomain( ) 메서드 : 생성된 쿠키가 전송될 수 있는 도메인을 직접 지정

 

(5)   쿠키의 경로 설정

□ 도메인 내 특정 경로에만 쿠키가 전송되어야 할 때

setPath( )메서드 : 쿠키가 사용될 URL의 도메인 이후 주소의 특정 경로를 지정하고, 결과적으로 쿠키가 사용될 경로를 제한

cookie.setPath("/Chap08/CookiePathTest/")

 

'JSP > 이론' 카테고리의 다른 글

[JSP][이론]05 JSP 액션 태그  (0) 2020.09.07
[JSP][이론]04 JSP 세션 관리_HTTPSession  (0) 2020.09.05
[JSP][이론] 02 JSP 기초  (0) 2020.09.05
[JSP][이론] 01.서블릿  (0) 2020.09.04
[JSP][이론] 들어가며  (0) 2020.09.04

+ Recent posts