Back/JSP

5장 쿠키

2023. 4. 10. 17:18
목차
  1. 쿠키 Cookie
  2. 쿠키의 동작 과정
  3. 쿠키의 구성 요소
  4. 쿠키에 의한 웹 브라우저 구분
  5. response 내장 객체
  6. 응답 형식 지정 메소드
  7. 응답 헤더 메소드
  8. 페이지 이동 관련 메소드
  9. 페이지 이동하기
  10. 로그인 화면
  11. 로그인 성공
  12. 로그인 실패
  13. Cookie 클래스의 역할
  14. 쿠키 관련 메소드
  15. 쿠키와 세션의 차이
  16. 쿠키 생성 메서드
  17. 쿠키 정보 메서드
  18. 쿠키 삭제 기능

쿠키 Cookie

  • 쿠키는 사이트에 접속할 때 생성되는 정보를 담은 4KB 이하 크기의 임시 파일을 의미
  • 네트워크 환경에서 클라이언트와 웹 서버 간의 상태를 지속적으로 유지하기 위해 사용
  • 서버에서 생성하고 브라우저에 응답하여 저장하도록 하는 데이터 조각이다.
  • 브라우저는 저장된 쿠키를 해당 사이트에 자원 요청 시 포함하여 전송함.
  • 브라우저가 사이트를 이요하면서 유지할 값이 있을 때 사용함.
  • 쿠키는 불순한 의도로 복사되거나 해킹 등에 의해 개인 정보가 탈취될 수 있다는 보안상 취약한 단점 존재
  • 저장 수 용량이 제한이 있다는 단점이 있음.
  • 서버에 부하를 주지 않다는 장점이 있음.

쿠키의 동작 과정

1. 브라우저에서 서버로 자원을 요청

2. 서버에서 쿠키 생성 및 응답에 포함

3. 브라우저는 응답받은 쿠키를 저장소에 저장

4. 해당 사이트로 요청 시 쿠키를 함께 전송

5. 요청에서 쿠키 정보를 확인 

쿠키의 구성 요소

  • 이름 : 쿠키 이름
  • 값 : 이름에 열결된 값
  • 유효시간 : 초단위 시간(설정하면 해당 시간동안 유지하고 설정하지 않으면 세션 유지 시간동안만 유지)
  • 도메인 : 쿠키를 생성한 사이트
  • 경로 : 쿠키를 전송할 요청 URL(일반적으로는 최상위 경로)

쿠키에 의한 웹 브라우저 구분

  • 쿠키는 클라이언트의 정보를 웹 브라우저에 저장하기 때문에 이후 웹 서버로 서비스를 요청할 경우 쿠키를 읽어 새로운 웹 브라우저인지 아니면 이전에 요청했던 웹 브라우저인지를 구별함
  • 쿠키가 생성되면 웹 브라우저는 쿠키가 삭제되기 전까지 쿠키의 요청이 있을 때마다 웹 서버에게 쿠키를 제공

response 내장 객체

  • JSP 웹페이지의 실행 결과를 웹 브라우저에 반환해 줄 때 사용하는 객체
  • 서버는 클라이언트에 대한 응답을 response 객체를 통해 처리

응답 형식 지정 메소드

  • 컴텐츠 타입이나 문자 셋에 대한 정보를 지정할 때 사용하는 메서드의 종류는 다음과 같다.

응답 헤더 메소드

  • 헤더 정보나 쿠키 등에 대한 정보를 지정할 때 사용하는 메소드의 종류는 다음 표를 참조

페이지 이동 관련 메소드

  • 웹 브라우저에서 지장한 특정 페이지로 이동할 때 사용하는 메소드의 종류는 다음과 같다.

페이지 이동하기

  • sendRedirect() 메소드
  • 웹 브라우저에서 다른 페이지로 강제 이동하기 위해 사용
response.sendRedirect("파일명 또는 URL 주소")

로그인 화면

세션 생성하여 ID PW 맞는지 확인하기
    <hr>
    <%
    request.setCharacterEncoding("UTF-8");
    String id = request.getParameter("id");
    String pw = request.getParameter("passwd");

    BufferedReader reader = null;
    try{
        String filePath = application.getRealPath("/WEB-INF/account.txt");
        reader = new BufferedReader(new FileReader(filePath));
        while (true){
            String str = reader.readLine();
            if(str ==null){
                break;
            }
            String[] result = str.split(" ");
            String uid = result[0];
            String upw = result[1]; 
            String uname = result[2];
            if(id.equals(uid) && pw.equals(upw)){//로그인 성공으로 이동
                session.setAttribute("memberId" , id);
                session.setAttribute("memberPw", pw);
                response.sendRedirect("loginSuccess.jsp");
                return;
            }
        }
        response.sendRedirect("loginFailure.jsp");//전부 실패시 로그인 실패로 이동
    }catch (FileNotFoundException fnfe){
        out.println("파일이 존재하지 않습니다.");
    }catch (IOException ioe){
        out.println("파일을 읽을 수 없습니다.");
    }finally{
        try{
            reader.close();
        }catch(Exception e){
            out.println("reader 닫기 에러발생");
        }
    }

    %>

로그인 성공

Home > 로그인 성공 화면
    <hr>
    로그인을 성공적으로 수행하였습니다.<br>

    home > 모든 세션 정보 확인하기
    <hr>
    <%
        String name = "";
        String value = "";

        Enumeration en = session.getAttributeNames();
        int count = 0;
        while(en.hasMoreElements()){
            count++;
            name = en.nextElement().toString();
            value = session.getAttribute(name).toString();

            out.println(count + ".세션의 속성 이름 : ["+ name +"]<br>");
            out.println(count + ".세션의 속성값 : ["+ value +"]<br>");
        }
        out.println("새로운 세션 생성 성공 ! <br>");
        out.println("[ " + value + " ]님이 입장하셨습니다. ");
    %>

로그인 실패

<body>
    Home > 로그인 실패 화면
    <hr>
    로그인을 실패하였습니다! <br><br>
    <form name = "loginForm" action = "login.jsp" method = "post">
        <input type = "submit" value = "로그인하기">
    </form>
</body>

Cookie 클래스의 역할

  • 쿠키는 연결 상태가 없는 HTTP 프로토콜을 위해 접속된 상태를 그대로 유지할 때 필요
  • 쿠키는 웹 브라우저에 상태 정보를 저장하기 때문에 이후 웹 서버로 전송되는 서비스 요청에는 쿠키가 가지고 있는 정보도 함께 포함되어 전송
  • Cookie 클래스는 쿠키 생성 및 관련 정보 등을 설정하기 위해 다양한 쿠키 관련 메서드를 제공

쿠키 관련 메소드

쿠키와 세션의 차이

  • 웹 브라우저에서 서버로 접속할 때 쿠키 대신 세션을 사용하는 이유는 쿠키에 비해 세션이 보안에 강하기 때문임
  • 쿠키와 세션의 가장 큰 차이점은 웹 브라우저를 통해 서비스를 요청할 때 사용자의 정보가 저장되는 위치
  • 쿠키는 서버의 자원을 전혀 사용하지 않지만 세션은 서버의 자원을 사용함
  • 웹 서비스에 대한 요청 속도는 세션보다 쿠키가 더 빠르므로 쿠키와 세션의 선택은 주어진 개발 환경에 맞춰 사용하면 됨.

X

쿠키 생성 메서드

Cookie cooks = new Cookie("memberId" , "space");//쿠키이름, 쿠키값
response.addCookie(cooks); // 쿠키 설정(변수명)

쿠키 정보 메서드

  • getCookie() 메서드 : 쿠키 객체 가져오기
  • Cookie [] 변수명 : 여러 개의 쿠키 객체 가져오기
Cookie[] cooks = request.getCookies();
  • getName() 메소드 : 쿠키 이름 가져오기
  • getValue() 메소드 : 쿠키값 가져오기
Cookies[] cooks = request.getCookies();
for(int count =0 ; count < cooks.length; count++){
    out.println(cooks[count].getName() + " : " + cooks[count].getvValue());
}

쿠키 삭제 기능

  • Cookie 클래스에서는 쿠키를 삭제하기 위한 별도의 기능을 제공하지 않기 때문에 쿠키를 삭제하려면 setMaxAge() 메서드를 사용하여 괄호 안에 정수의 값 0을 매개변수로 입력하여 유효시간이 만료됨에 따라 쿠키는 자동으로 삭제되도록 선언해야 함
  • 쿠키의 유효시간은 초 단위이다.
  • 시간이 지정되지 않으면 '세션쿠키' 라고하며 브라우저가 종료되면 삭제됨
Cookie cooks = new Cookie("userID" , "u_id");
cooks.setMaxAge(0); //1시간으로 하려면 60*60으로 하면 됨
response.addCookie(cooks);
  • 유효시간을 0으로 만듦으로 쿠키를 삭제한다.

'Back > JSP' 카테고리의 다른 글

7장 MySQL  (1) 2023.04.11
6장 액션 태그  (0) 2023.04.10
4장 세션  (1) 2023.04.10
3장 유효성 검사  (0) 2023.04.09
2장 폼 태그 활용  (0) 2023.04.09
  1. 쿠키 Cookie
  2. 쿠키의 동작 과정
  3. 쿠키의 구성 요소
  4. 쿠키에 의한 웹 브라우저 구분
  5. response 내장 객체
  6. 응답 형식 지정 메소드
  7. 응답 헤더 메소드
  8. 페이지 이동 관련 메소드
  9. 페이지 이동하기
  10. 로그인 화면
  11. 로그인 성공
  12. 로그인 실패
  13. Cookie 클래스의 역할
  14. 쿠키 관련 메소드
  15. 쿠키와 세션의 차이
  16. 쿠키 생성 메서드
  17. 쿠키 정보 메서드
  18. 쿠키 삭제 기능
'Back/JSP' 카테고리의 다른 글
  • 7장 MySQL
  • 6장 액션 태그
  • 4장 세션
  • 3장 유효성 검사
잘잔디
잘잔디
4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
잘잔디
MBCS 공부일지
잘잔디
전체
오늘
어제
  • 분류 전체보기 (217)
    • 파이썬 (28)
      • 파이썬 이론 (8)
      • NumPy (3)
      • Pandas (6)
      • 파이썬 시각화 (8)
      • 응용 (2)
    • Java (3)
    • Back (38)
      • DataBase이론 (12)
      • MySQL (2)
      • JSP (8)
      • JSTL (2)
      • Spring (0)
      • Django (8)
      • MongoDB (6)
      • FastAPI (0)
    • Front (8)
      • HTML (3)
      • CSS (2)
      • JS (1)
    • 회고록 (10)
    • 알고리즘 문제 풀이 (95)
      • 알고리즘 이론 공부 (14)
      • 프로그래머스 (69)
      • 백준 (12)
    • 머신러닝 (0)
    • 딥러닝 (0)
    • Git (3)
    • R 프로그래밍 (3)
    • 빅데이터 관리 (16)
      • 리눅스 (4)
      • Hadoop (12)
    • AWS (2)
    • 일상 (10)
      • 책 리뷰 (5)
      • TOEIC (2)
      • 자잘하게 공부한 것들 (2)
    • 사이버보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 골드
  • JS
  • backend
  • HTML
  • OOP
  • 백준
  • 즐거웠다
  • playdata
  • Database
  • 독산역
  • CSS
  • Java
  • web
  • JavaScript
  • db
  • 이중우선순위 큐
  • Encore
  • 객체지향
  • git

최근 댓글

최근 글

hELLO · Designed By 정상우.
잘잔디
5장 쿠키
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.