상세 컨텐츠

본문 제목

[8과] JSP프로그래밍_쿠키 필기하기

<개인공부>

by 데브수달 2022. 11. 19. 16:36

본문

728x90
반응형

1.쿠기의 생성과 사용

1) 쿠키의 의미

-사용자 식별 정보

-<이름,값> 을 가지는 작은 크기의 텍스트 데이터

(쿠키에 추가 정보(속성)를 포함시킬 수 도 있음

 

> 쿠키의 사용

-최초 요청의 처리에서 웹 서버가 쿠키를 만들어 응답 헤더에 포함시킴

-웹 브라우저가 쿠키를 저장했자다, 차후 브라우저가 같은 서버에서 다른 요청을 보낼 때, 저장 중인 쿠키를 요청 헤더에 넣어 보냄.

-서버와 클라이언트 간 상태 정보를 공유함으로써

연이은 여러 요청을 관련지어 처리할  수 있음.

(웹 서버는 쿠키정보를 이용하여 사용자 를 식별할 수 있음.)

 

2)요청과 응답에서 쿠키의 전송

Cookie: name=Jimmy; phone=010-1111-2222

 

Set-Cookie:name+Jimmy; Max_Age = 1000;

         Expires=Thu, 23-Aug-2021 11:46:52 GMT

Set-Cookie: phone=010-1111-2222; Domain=java.oracle.com

 

요청 =>응답(쿠키)=>요청(쿠키) ->응답(쿠키)=>요청(쿠키) =>웹 서버

 

3)쿠키의 구성

-하나의 쿠키는 하나의 <이름,값>을 가짐

(이름과 값은 알파벳과 숫자로 구성된 문자열)

-쿠키는 추가 정보를 가질 수 있음

+유효 시간: 쿠키의 지속 시간

+도메인: 쿠키를 만들고 이용할 서버를 지정

+경로: 쿠키가 보내질 서버의 경로를 지정

+주석: 쿠키의 목적을 설명

-추가 정보는 브라우저에서 기억하고 있음

 

4)쿠키의 생성과 전송  

>쿠키의 생성

-서버 측 jsp 페이지에서 Cookie 클래스의 객체를 생성함

(new Cookie(String name, String value)

>생성된 쿠키의 전송

-response.addCookie(Cookie)는 응답 헤더에 쿠키 하나를 추가한다

(쿠키를 전송하기 전에 추가 정보를 설정할 수 있음)

 

5)Cookie클래스의 메소드

>메서드 설명

메서드 리턴타입 기능
getName() String 쿠키의 이름을 리턴한다.
getValue() String 쿠키의 값을 리턴한다.
setValue(String value) void 쿠키의 값을 value로 지정한다.
setDomain(String patterm) void 쿠키가 전송될 서버의 도메인을 지정한다.
getDomain() String 지정된 쿠키의 도메인을 리턴한다.
setPath(String uri) String 설정된 쿠키의 전송 경로를 리턴한다.
setMaxAge(int time) Void 쿠키의 유효시간을 초 단위로 설정한다. 시간을 음수로 지정할 경우 웹 브라우저가 종료되면 쿠키와 함께 삭제된다. 기본 값은 -1이다.
getMaxAge() String 쿠키의 유효 시간을 리턴한다.
     

 

2.쿠키 값 읽기,변경,삭제

1)쿠키 생성하기

2)쿠키 값 읽기

-JSP페이지에서 클라이언트가 보낸 쿠키를 읽을 때는 

request.getCookie()를 사용

= 웹 브라우저로부터 전송된 Cookie객체들의 배열을 리턴함

 

3)쿠키의 유효 시간

-정보의 공유를 위해 브라우저가 쿠키를 저장하는 기간

=쿠키 생성 후 Cookie클래스의 

setMaxAge(int seconds)를 사용하여 지정

=유효 시간이 경과된 쿠키는 웹 브라우저에서 자동 삭제됨

=유효 시간을 0으로 하면 기존 쿠키를 삭제하는 것

-시간 설정을 하지 않으면 웹 브라우저가 종료될 때 쿠키가 삭제됨

(기본 값인 -1로 설정됨)

 

4)쿠키 값의 변경과 쿠키 삭제

>쿠키 값의 변경

-같은 이름의 Cookie객체를 만들고 또는 변경하려는 Cookie객체의 값을 바꾼 후 응답에 쿠키를 추가함

>쿠키의 삭제

-쿠키 값의 변경 방법과 유사

-삭제하고자 하는 Cookie 객체 또는 같은 이름의 객체를 이용함.

유효 시간을 0으로 한 후 응답에 쿠키를 추가함

 

5)쿠키 값 변경

>쿠키 생성과 응답

>같은 이름의 쿠키를 가지고 값을 변경

 

6)쿠키 삭제 

-유효 시간을 0으로 설정한 후 응답

 

 

3.쿠키의 도메인과 경로

1)쿠키의 도메인

>요청시 쿠키의 전송(클라이언트에서 서버로)

-기본적으로 쿠키는 그것을 보낸 서버에게만 전송 될 수 있음

=http://www.oracle.com/JSP/create_cookie.jsp에서 생성된 쿠키는 http://www.oracle.com으로 로 시작되는 페이지에 접속할 때만 전송됨

=예를 들어 java.oracle.com로 시작되는 페이지에는 전송되지 않음

 

-쿠키에 도메인 설정을 하면 같은 도메인 상에 있는 다른 호스트들과 쿠키를 공유할 수 있음

=cookie.setDomain(".oracle.com")

>쿠키의 도메인 설정

=쿠키를 이용할 도메인을 정하는 것

=Cookie클래스의 setDomain(String domain)을 사용

-서버는 자신이 속한 도메인 내에서 쿠키의 도메인을 설정할 수 있음

=예:java.oracle.com에서는 setDomain("java.oracle.com)" setDomain(".oracle.com")이 가능

-쿠키를 생성한 서버의 주소와 관련이 없는 도메인은 의미가 없음

 

2)쿠키의 경로

>쿠키의 경로 설정

-클라이언트가 서버에 요청을 보낼 때, 쿠키를 보낼 서버 상의 경로를 정하는 것

=경로는 url에서 서버 주소 이후에 나오는 부분을 의미함.

=http://localhost:8080/HelloJSP/8-1. jsp에서 경로는 /HelloJSP

=지정 경로(하위 경로 포함)에 있는 페이지에만 쿠키를 보냄

=경로를 지정하지 않으면 쿠키를 만든 페이지가 위치한 경로로 설정됨

-Cookie클래스의 setPath(String uri)을 사용

 

>동적 웹 프로젝트의 폴더 구성

 

4.쿠키를 이용한 로그인 구현

1)쿠키를 이용하여 로그인 구현하기

>HTTP 프로토콜의  stateless특성

-서버가 응답을 보낸 후에는 클라이언트에 대해 알지 못함

--a.jsp요청과 계속된 b.jsp요청은 서로 무관함.

-상태 관리를 위해 쿠키나 세션을 이용해야 함

>쿠키를 이용한 로그인/로그아웃 절차

-아이디와 비밀번호를 입력할 수 있는 폼을 제시

-사용자가 입력한 아이디, 비밀번호를 읽고, 가입된 회원인지 판단

-가입된 회원이라면, 로그인 상태에서 사용할 쿠키를 생성

-이후 페이지를 방문할 때에는 서버가 클라이언트가 보낸 쿠키를 가지고 로그인 여부를 판단

-로그아웃을 하면 사용했던 쿠키를 삭제

>로그인을 위한 입력 폼 (8-8.jsp)

 

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

<html>

<body>

      <form action="8-9.jsp" method="post">

        아이디 <input type= 'text" name="id"><br>

        비밀번호  <input type= 'password" name="pw"><br>

       <input type="submit" value="확인">

      </form>

</body>

</html>

>로그인 처리

-로그인을 위해 회원 DB를 이용하는 부분은 생략함

-로그인 요청이 성공하면 쿠리를 생성해 응답 헤더에 포함시킴

-차후의 요청에서 이 쿠키가 요청 헤더에 포함됨.

-아이디가 "admin", 비밀번호 "pass"이면 쿠키를 생성함(로그인 성공)

<% 

    String id = request.getParameter("id");

    String pw = request.getParameter("pw");

    if(id.equals(" admin") & pw.equals("pass")) {

       Cookie cookie = new Cookie("ID","ADMIN");

       response.addCookie(cookie);

       out.print("<h3>로그인 성공</h3>");

} else {

      out.print("<h3> 로그인 실패</h3>");

}

%>

<h3><a href="8-10.jsp" 로그인 확인</a></h3>

</body>

 

 

-쿠키의 이름과 값을 확인하여 로그인 여부를 확인

<%

     Cookie[]cok

8-10.jsp

-쿠키를 삭제하여 로그아웃 처리

8-11.jsp

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형

관련글 더보기