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 |