반응형
학습 목표
- 쿠키란
- 쿠키 생성과 사용
- 쿠키를 이용한 로그인 처리
웹서버는 쿠키를 이용해 웹 브라우저에 정보를 전송할 수 있다. 웹 서버로부터 쿠키를 전달받은 웹 브라우저는 이후에 웹 서버에 요청을 보낼 때, 쿠키를 함께 전송한다. 이를 사용하면, 사용해 웹 서버와 웹 브라우저는 필요한 값을 공유하고 상태를 유지할 수 있다.
쿠키 사용하기
쿠키는 웹브라우저가 보관하는 데이터이다.
웹 브라우저는 웹 서버에 요청할때, 쿠키를 함께 전송하고, 웹 서버는 웹 브라우저가 전송한 쿠키를 사용해 필요한 데이터를 읽을 수 있다. 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);
}
}
}
%>
쿠키의 도메인
기본적으로 쿠키는 그 쿠키를 생성한 서버에만 전송된다.
쿠키와 헤더
쿠키는 쿠키헤더를 통해 헤더에 전송된다. 쿠키 헤더는 한 개의 쿠키 값을 전달한다.
쿠키를 사용한 로그인 상태 유지
- 로그인에 성공하면 특정 이름을 갖는 쿠키를 생성한다.
- 해당 쿠키가 존재하면 로그인한 상태라고 판단한다.
- 로그아웃하면 해당 쿠키를 삭제한다.
예를들어, 로그인에 성공하면 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 |