티스토리 뷰

스프링, 자바

jsp 와 쿠키

killog 2021. 1. 19. 18:49
반응형

학습 목표

  • 쿠키란
  • 쿠키 생성과 사용
  • 쿠키를 이용한 로그인 처리

웹서버는 쿠키를 이용해 웹 브라우저에 정보를 전송할 수 있다. 웹 서버로부터 쿠키를 전달받은 웹 브라우저는 이후에 웹 서버에 요청을 보낼 때, 쿠키를 함께 전송한다. 이를 사용하면, 사용해 웹 서버와 웹 브라우저는 필요한 값을 공유하고 상태를 유지할 수 있다.


쿠키 사용하기

쿠키는 웹브라우저가 보관하는 데이터이다.

웹 브라우저는 웹 서버에 요청할때, 쿠키를 함께 전송하고, 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해 필요한 데이터를 읽을 수 있다. JSP 에서 생성하는 쿠키는 웹 서버에서 생성하는 쿠키이다.

[ 쿠키의 동작 방식]

  • 쿠키 생성단계: 쿠키를 사용하려면 먼저 쿠키를 생성해야한다. JSP 프로그래밍에서 쿠키는 웹서버 측에서 생성한다. 생성한 쿠키를 응답 데이터의 헤더에 저장해 웹 브라우저에 전송한다.
  • 쿠키 저장단계: 웹 브라우저는 응답데이터에 포함된 쿠키를 쿠키 저장소에 보관한다. 쿠키의 종류에 따라 메모리나 파일에 저장한다.
  • 쿠키 전송단계: 웹 브라우저는 저장한 쿠키를 사용해 필요한 작업을 수행한다.

쿠키가 웹브라우저에 저장되면, 웹 브라우저는 쿠키가 삭데되기 전까지 웹 서버에 쿠키를 전송한다. 웹 어플리케이션을 사용하는 동안 지속적으로 유지해야하는 정보는 쿠키를 사용해 저장하면 된다.

쿠키의 구성

  • 이름 : 각각의 쿠키를 구별하는데 사용하는 이름
  • 값: 쿠키의 이름과 관련된 값
  • 유효시간: 쿠키의 유지 시간
  • 도메인: 쿠키를 전송할 도메인
  • 경로: 쿠키를 전송할 요청 경로

하나의 웹브라우저는 여러 개의 쿠키를 가질 수 있다. 각 쿠키 구분자는 이름이다. 각 쿠키는 값을 가지고, 서버는 이 삾을 사용해 원하는 작업을 수행한다.

쿠키 생성하기

쿠키를 생성할 때, Cookie 클래스를 사용한다.

<%
    Cookie cookie =  new Cookie("cookieName", "cookieValue");
    response.addCookie(cookie); // 웹 브라우저에 쿠키 정보를 전송한다.
%>

쿠키 값 읽어오기

Cookie[] cookies = request.getCookies(); // cookie 배열을 리턴한다. 쿠키가 없을 시, null return
// 쿠키 생성
<%@ page contentType ="text/html; charset=UTF-8" %>
<%@ page import="java.net.URLEncoder" %>

<%
Cookie cookie = new Cookie("name",URLEncoder.encode("최범균", "utf-8"));
response.addCookie(cookie);
%>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<h2> 쿠키 </h2>
<%= cookie.getName() %>
<%= cookie.getValue() %><br>
</body>
</html>
// 쿠키
<%@ page contentType ="text/html; charset=UTF-8" %>
<%@ page import="java.net.URLDecoder" %>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<h2> 쿠키 </h2>
<%
Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length>0){
    for(int i =0; i<cookies.length; i++){
%>
<%= cookies[i].getName() %>
<%= URLDecoder.decode(cookies[i].getValue(),"utf-8") %><br>
<% }
}else{  %>
쿠키 없어요
<% } %>
</body>
</html>
<%@ page contentType ="text/html; charset=UTF-8" %>
<%@ page import="java.net.URLEncoder" %>
<%

Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length>0){
    for(int i =0; i<cookies.length; i++){
if( cookies[i].getName().equals("name")){
    Cookie cookie  = new Cookie("name",
    URLEncoder.encode("jsp 프로그래밍","utf-8"));
    response.addCookie(cookie);
}
    }
}
%>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<h2> 쿠키 값 변경</h2>
</body>
</html>

쿠키 삭제

cookie.setMaxAge(0);
<%
Cookie[] cookies = request.getCookies();
if(cookies!=null && cookies.length>0){
    for(int i =0; i<cookies.length; i++){
if( cookies[i].getName().equals("name")){
    Cookie cookie  = new Cookie("name",
    URLEncoder.encode("","utf-8"));
    cookie.setMaxAge(0);
    response.addCookie(cookie);
}
    }
}
%>

쿠키의 도메인

기본적으로 쿠키는 그 쿠키를 생성한 서버에만 전송된다.

쿠키와 헤더

쿠키는 쿠키헤더를 통해 헤더에 전송된다. 쿠키 헤더는 한 개의 쿠키 값을 전달한다.

쿠키를 사용한 로그인 상태 유지

  1. 로그인에 성공하면 특정 이름을 갖는 쿠키를 생성한다.
  2. 해당 쿠키가 존재하면 로그인한 상태라고 판단한다.
  3. 로그아웃하면 해당 쿠키를 삭제한다.

예를들어, 로그인에 성공하면 AUTH라는 쿠키를 생성하고, AUTH 쿠키가 존재하면, 로그인한 상태라고 인식한다.

반응형

'스프링, 자바' 카테고리의 다른 글

NIO 기반 입출력 및 네트워킹  (0) 2021.01.23
jsp 와 세션  (0) 2021.01.19
jsp 소스 코드의 동작 과정  (0) 2021.01.19
스프링 웹 개발 기초  (0) 2021.01.19
프로젝트 환경 설정  (0) 2021.01.19
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함